请原谅我的n00bility ...我正在尝试使用代理在全局var阶段不再未定义之后执行一些代码。这是我天真的尝试:
```
var stage = undefined
let myObj;
let st = {
stage: stage,
}
let lr = {
get: function(obj:any, prop:any):LightRay{
myObj = new SomeObjThatNeedsStage(obj[prop]) // <= supposed to be non-undefined stage
return myObj
},
}
let p = new Proxy(st, lr)
// At this point I expect the lr handler to have been executed if the stage var has been instantiated by some external code that's out of my control.
```
显然,我误解了代理的工作原理,但我尝试了各种方案,但都不起作用。将未定义阶段作为目标传递给代理不起作用(Cannot create proxy with a non-object as target or handler
出现错误)。在这种情况下如何使用代理?为什么在实例化之前我不能observe
使用代理的未定义阶段,然后执行回调?
供参考:
Stage var 是全局变量,我无法控制它(它在某些时候由 create.js 实例化)。所有代码都从 UMD 模块执行。我正在使用打字稿(转译为 es5)。Object.defineProperty() 在我的浏览器中可用。此外,阶段(createjs.Stage 类型)在实例化时确实包含不同类型的 setter/getter,这在使用 typescript 时会出现问题。