我正在尝试使用 IIFE 作为一种方法(这可能是错误的)。
为什么 ?因为,我正在尝试实现代理设计模式。
在 adobe extendscript 中,有一个“app”对象可以访问文档等,例如 -
var length = app.activeDocument.length; // or some other property
现在,我想在“app”周围放置一个代理。所以我创建了一个代理对象 -
var AppProxy = {
activeDocument: function() { // do stuff...; return app.ActiveDocument; }
}
但是现在,这就是我必须访问它的方式 -
var length = AppProxy.activeDocument().length;
但这就是我想要访问它的方式 -
var length = AppProxy.activeDocument.length; // no parenthesis
所以我读到了关于 IIFE 的文章,最后做了这个——
var AppProxy = {
activeDocument: (function() {
// do stuff...;
return app.ActiveDocument; })()
}
正如预期的那样,AppProxy.activeDocument会在定义AppProxy时自动调用,即使在它达到var length = AppProxy.activeDocument.length 之前。
那么,当 AppProxy 被定义为对象文字时,如何防止这种情况发生?我的要求有解决方法吗?
谢谢。