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