Javascript 动态属性外部

Javascript 动态属性外部,javascript,socket.io,haxe,Javascript,Socket.io,Haxe,我正在尝试升级Socket.IO,但遇到了一个问题 到目前为止,为了设置变量,他们使用 socket.set(key, val, callback); 但现在是 socket.key = val; (见上一期) 我应该如何在Haxe中反映这种行为 欢迎任何线索 我建议使用内联函数: public inline function set(key : String, value : Dynamic) Reflect.setField(this, key, value); 您还可以使用

我正在尝试升级Socket.IO,但遇到了一个问题

到目前为止,为了设置变量,他们使用

socket.set(key, val, callback);
但现在是

socket.key = val;
(见上一期)


我应该如何在Haxe中反映这种行为


欢迎任何线索

我建议使用内联函数:

public inline function set(key : String, value : Dynamic)  
  Reflect.setField(this, key, value);
您还可以使用“”关键字


然后通过导入添加“
使用com.my.package.socketXtender;
”,您的代码应该会重新开始工作。

像这样吗?这看起来很适合setter,但我希望尽可能少地更改语法。IRC上的人告诉我,我可以实现动态,或者使用宏在字段上生成这些字段。我不知道哪一个是最好的你试过“机具动态”吗?这听起来是最简单的解决方案。是的,它确实有效,但我在填充,就像我在浪费Haxe打字系统一样。但也许这没什么帮助,我认为你不会从Haxe打字系统中得到很多好处,因为你存储的是动态值。这和Franco的答案差不多,但我必须编写另一个类。因为我可以直接在类Socket中编写,所以我不确定使用是否有帮助。哦,我想我误解了你的帖子。您愿意更改您编写的所有位置
set(…)
,但您希望将它们更改为“正确”语法(
socket.x=y
),并且您不确定如何使后者起作用。是这样吗?完全正确!我的目标是“复制”NodeJS语法,这样用户几乎可以在不更改代码的情况下切换到Haxe
class SocketExtender {
    public static inline function set(socket:Socket, key:String, value:Dynamic):Void {
        Reflect.setField(socket, key, value);
    }
    public static inline function get(socket:Socket, key:String):Dynamic {
        Reflect.field(socket, key);
    }
}