0

我正在尝试构建一个我事先不知道插件的插件系统。使用 browserify 中的 'require' 初始化对象。如下:

class.coffee:

   class MyClass
    name: "my-class"
    constructor: ->

    @getName: ->
        return @name

  exports.plugin = new MyClass

然后从我的调用文件中:

pluginName = # from a config file
{ plugin } = require './#{pluginName}.coffee'
console.log plugin
console.log plugin.getName()

第一个记录器调用给了我:

MyClass{ name="my-class" }

第二个失败了,但是 plugin.getName 不是一个函数。

任何帮助/指导表示赞赏。我不是 JS 开发人员,也是 coffeescript/node.js 的新手。

谢谢。

4

1 回答 1

1

你不应该有@before getName

在 JS 中拥有@相当于 this

MyClass.getName = function(){
  return this.name;
};

但在这种情况下,getName是类本身的函数,而不是 MyClass 实例。

没有@, 像这样,getName: ->JS 是这样的:

MyClass.prototype.getName = function(){
  return this.name;
}
于 2012-05-21T16:35:16.683 回答