Design patterns 更改「;这";haxe对象的作用域。可能的

Design patterns 更改「;这";haxe对象的作用域。可能的,design-patterns,delegates,haxe,Design Patterns,Delegates,Haxe,是否可以像javascript一样从外部更改对象的“this”范围 我看到了一个有趣的应用程序,其中可以创建一个容器对象,其中包含多个组件,每次组件自己修改属性时,它实际上都会隐式修改容器上的属性 别误会我。我知道同样的效果也可以通过事件、绑定、观察者等等实现。可能性确实是无穷的。我只是对这种时髦的委托方式感到好奇。您可以通过使用来实现这一点,但您必须知道,它在编译时不会是类型安全的。下面是一个小例子: class Test { public var a:Int; public

是否可以像javascript一样从外部更改对象的“this”范围

我看到了一个有趣的应用程序,其中可以创建一个容器对象,其中包含多个组件,每次组件自己修改属性时,它实际上都会隐式修改容器上的属性


别误会我。我知道同样的效果也可以通过事件、绑定、观察者等等实现。可能性确实是无穷的。我只是对这种时髦的委托方式感到好奇。

您可以通过使用来实现这一点,但您必须知道,它在编译时不会是类型安全的。下面是一个小例子:

class Test
{
    public var a:Int;

    public function new()
    {
        this.a = 0;
    }
}

class Test2
{
    public var a:Int;

    public function new()
    {
        this.a = 0;
    }

    public function increment()
    {
        this.a++;
    }

    static public function main()
    {
        var t = new Test2();
        var t2 = new Test();
        Reflect.callMethod(t2, Reflect.field(t, "increment"), []);

        trace(t2.a); //Traces 1
    }
}

另一种可能的方法是使用宏重新生成代码,以便使用其他对象而不是此对象。然而,这将是相对困难和毫无意义的。我不太明白你的想法,但根据我从你的描述中了解的情况,我建议你研究组件上的内联getter和setter,它们也会修改容器。

我不知道这是可能的。。。我花了一段时间才明白,酷家伙