我用一个方法及其别名创建了一个coffeeScript类:
class Class1
method1 : (param1)=>
console.log param1
aliasForMethod1: @method1
module.exports = Class1
输出javascript:
// Generated by CoffeeScript 1.6.2
(function() {
var Class1,
__bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };
Class1 = (function() {
function Class1() {
this.method1 = __bind(this.method1, this);
}
Class1.prototype.method1 = function(param1) {
return console.log(param1);
};
Class1.prototype.aliasForMethod1 = Class1.method1;
return Class1;
})();
module.exports = Class1;
}).call(this);
尝试使用此课程:
Class1 = require './class1'
instanceOfClass1 = new Class1()
instanceOfClass1.method1()
instanceOfClass1.aliasForMethod1()
但得到了错误:
$ node /pathToMyClassUser/class1_user.js
undefined
/pathToMyClassUser/class1_user.js:11
instanceOfClass1.aliasForMethod1();
^
TypeError: Property 'aliasForMethod1' of object #<Class1> is not a function
那么如何使用别名作为coffeeScript类中的方法?
答案 0 :(得分:9)
它试图在Class1
而不是原型上引用一个不存在的静态方法。你可以参考这样的正确方法(this::
或@::
等同于this.prototype.
,但更短 - 感谢mu提示):
class Class1
method1 : (param1)=>
console.log param1
aliasForMethod1: @::method1
或者将aliasForMethod1
定义为调用method1
的自己的方法。
class Class1
method1 : (param1)=>
console.log param1
aliasForMethod1: => @method1.apply(@, arguments)