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 回购协议中提出有关该问题的问题。