有沒有簡單的方法來防止$ 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,..)** –