Haxe Javascript: 阻止'$bind'生成?
Haxe Javascript: Prevent '$bind' generation?
有没有一种简单的方法可以防止在传递 class 成员函数时生成 $bind?
我有一个对象接受一个函数,该函数将在任意时间间隔内调用。该对象在调用函数之前总是将自身绑定为 '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
{
...
}
谢谢。
您使用宏来屏蔽未类型化的表达式,但这是相当危险的。
任何对 "this" 的引用都将失败。
http://try-haxe.mrcdk.com/#70ee4
顺便说一句,我认为如果函数代码不涉及"this",编译器可能会优化为不生成$bind。您可能想在 github 回购协议中提出有关该问题的问题。
有没有一种简单的方法可以防止在传递 class 成员函数时生成 $bind?
我有一个对象接受一个函数,该函数将在任意时间间隔内调用。该对象在调用函数之前总是将自身绑定为 '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
{
...
}
谢谢。
您使用宏来屏蔽未类型化的表达式,但这是相当危险的。 任何对 "this" 的引用都将失败。
http://try-haxe.mrcdk.com/#70ee4
顺便说一句,我认为如果函数代码不涉及"this",编译器可能会优化为不生成$bind。您可能想在 github 回购协议中提出有关该问题的问题。