我有以下代码声明了一个方法,该方法在函数结果分配给原型槽之前由中间函数建议。
class A
somemethod: advise => @dosomething()
为什么在这种情况下胖箭头不绑定到实例?
我有以下代码声明了一个方法,该方法在函数结果分配给原型槽之前由中间函数建议。
class A
somemethod: advise => @dosomething()
为什么在这种情况下胖箭头不绑定到实例?
当在原型槽名称和函数定义之间放置中介时,您会破坏使 CS 在构造函数中发出绑定代码的句法模式
class A
foo: (paramlist) =>
bar: ()=>
baz: =>
所有这些方法定义在生成的 Javascript 构造函数中发出此代码
function A() {
this.foo = __bind(this.foo, this);
this.bar = __bind(this.bar, this);
this.baz = __bind(this.baz, this);
}
如果你在两者之间插入一些东西,你就会破坏Coffeescript编译器可以识别该模式并生成必要代码的句法模式。
class A
helpWhereIsMyMethod: processTheFollowing => @doSomething()
在这种情况下,构造函数中不会生成绑定调用
当您定义一个原型槽(名称)并立即为其分配一个(匿名)函数时,您已经有效地创建了一个句柄,您以后可以通过该句柄访问该函数并“处理”它或调用它(大多数情况下)。
如果在将结果绑定到原型槽之前将函数通过管道传递到另一个函数(中介),那么您实际上会创建一个以后无法访问的匿名函数。
因此,Coffeescript 编译器不知道如何在构造函数中发出绑定代码,因为在对象创建期间不再提供对匿名函数的访问。
中间函数也可以生成自己的代码并发出这个新代码以绑定到原型槽。