Pre*_*hev 2 delegates design-patterns haxe
是否有可能从外部更改对象的"this"范围,非常类似于javascript?
我看到一个有趣的应用程序,其中一个可以创建一个容器对象,具有多个组件,每次组件自己修改一个属性时,它实际上隐式修改容器上的属性.
别弄错我的意思.我知道事件,绑定,观察者和不可以实现相同的效果.可能性确实无穷无尽.我只是对这种时髦的授权方式感到好奇.
您可以使用Reflect.callMethod实现这一点,但您必须知道它在编译时不是类型安全的.这是一个小例子:
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
}
}
Run Code Online (Sandbox Code Playgroud)