有没有简单的方法来防止$ bind代传递类成员函数?Haxe Javascript:防止'绑定'代?
我有一个对象,它接受一个将在任意时间间隔内调用的函数。对象在调用函数之前总是将自己绑定为'this'绑定(这是在本地完成的),因此对$ bind的调用本身是不必要的。然而,我似乎无法找到一种简单的方法来防止$ bind被任何时候按值获取成员函数时发出。
我发现的唯一方法是使用__js__与成员函数名称的字符串字面量,我宁愿避免...有没有类型的方式来这样做?或者更好一点?一种仍然使用haxe语法的方法(带标识符而不是字符串文字)?
例子:
private function onSpawn():Void
{
this.setAct(act); // Will generate JS: this.setAct($bind(this,this.act));
// Id like to simply have it generate: this.setAct(this.act);
// Mitigated like this:
this.setAct(untyped __js__("this.act"));
}
private function act(dt:Float):Void
{
...
}
谢谢。
不确定是否有除修改生成器(ocaml)以外的任何方法。使用$ bind时遇到的问题是什么? – KevinResoL
$ bind在不需要的地方添加了另一个不必要的函数调用。我正在使用JavaScript解释器,这些函数被称为每帧许多对象,这意味着一个不必要的性能影响。 (请参阅https://github.com/svaarala/duktape/issues/1300#issuecomment-273003473)。不仅如此,$ bind还会在每次调用时添加3个属性查找,这也很慢:** f.method.apply(f.scope,..)** –