0

我有一个包含以下代码的 person.coffee 文件

class Person 
  constructor: (@name) ->
  talk: ->
    "hello"

module.exports = Person

现在我正在尝试在 app.js 中使用它

Person = require "./person"
p = new Person "Emma"
console.log p.talk

它在控制台中打印 [Function]。任何想法,什么是错的

注意:我已经更新了空间。解决方案:我在 app.js 中将 p.talk 更改为 p.talk() 并且现在已修复。

4

1 回答 1

4

好像你的缩进被破坏了,你的代码将编译为

var Person;

Person = (function() {

  Person.name = 'Person';

  function Person(name) {
    this.name = name;
    ({
      talk: function() {
        return "hello";
      }
    });
  }

  return Person;

})();

当你想要这样的东西时

class Person 
  constructor: (@name) ->

  talk: -> "hello"

这将被编译成

var Person;

Person = (function() {

  Person.name = 'Person';

  function Person(name) {
    this.name = name;
  }

  Person.prototype.talk = function() {
    return "hello";
  };

  return Person;

})();
于 2013-09-18T08:02:36.260 回答