【发布时间】:2015-11-29 00:57:15
【问题描述】:
我有一个(非常)简化的类,如下所示:
var myClass = (function( window ) {
function myClass(configObject) {
var instanceVar = 'something that is different for every instance of myClass';
configObject.action && configObject.action();
}
return myClass;
})(window);
现在,当我传递选项配置对象时(理论上可能包含无限数量的函数,这些函数又引用来自类的变量,对于该类的每个实例都不同)...
var config = {
"action": function() {
concole.log(instanceVar); // is undefined when called from myClass, because it's in another scope
}
};
var instance = new myClass(config);
...当然,这些变量在函数范围内是不可访问的。如何将配置中的功能放入类范围?
bind我想到了,但它只改变了thiscontext,而不是范围。我可以将变量作为参数传递给函数,但是每个函数都必须在内部检查该参数,并且关于来自外部配置对象的函数数量可能超出我的控制,我想避免将此作为先决条件。
有没有办法将函数“克隆”到类范围或类似的范围内?闭包是否有任何帮助(如果有,请举例说明,因为我还没有完全理解闭包)。
谢谢!
【问题讨论】:
标签: javascript scope instance-variables