gpt4 book ai didi

javascript - 将功能放在另一个范围内?

转载 作者:行者123 更新时间:2023-11-30 12:16:09 26 4
gpt4 key购买 nike

我有一个(非常)简化的类,如下所示:

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 出现在我的脑海中,但它只改变了 this 上下文,而不是范围。我可以将变量作为参数传递给函数,但是每个函数都必须在内部检查该参数,并且关于来自外部配置对象的函数数量可能不受我的控制,我想避免将此作为先决条件。

有没有办法将函数“克隆”到类作用域或类似的东西中?闭包是否有任何帮助(如果有,请举例说明,因为我还没有完全了解闭包)。

谢谢!

最佳答案

这是我的版本

var myClass = (function( global ) {
function myClass(configObject) {
var instanceVar = 'something that is different for every instance of myClass';
configObject.action && configObject.action(instanceVar);
}
return myClass;
})(window);

var instance = myClass({
"action": function(instanceVar) {
console.log(instanceVar);
}
});

js fiddle :https://jsfiddle.net/e0pgs4vw/

关于javascript - 将功能放在另一个范围内?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32371417/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com