如果这是一个简单的问题,请多多包涵。在 javascript 中,如何创建一个对所选函数具有作用域的变量?例如,我想要变量 var1 可以用 function1() 和 function2() 更新,但不能用任何其他函数更新。可能吗?
问问题
38 次
5 回答
4
可以通过使用 IIFE 创建闭包来做到这一点:
(function() {
var secretVar = 1;
window.func1 = function() { };
window.func2 = function() { };
})();
现在只有func1()
并且func2()
将能够访问secretVar
于 2013-07-08T13:48:59.383 回答
1
您必须在有限范围内定义这些函数
var scope = function() {
var scopedVariable = "Hi";
var func1 = function() { /* hi */ }
var func2 = function() { /* hi */ }
}
// scopedVariable is undefined
于 2013-07-08T13:49:39.857 回答
1
(function() {
var a = 1;
window.inc = function() {
a++;
}
window.showA = function() {
alert(a);
}
})();
inc();
showA();
于 2013-07-08T13:50:09.957 回答
1
您可以通过以下方式创建范围:
function MyScope(x) {
this.x = x;
this.function1 = function (val) {
this.x = val;
};
}
然后实例化一个对象如下:
var myObject = new MyScope(5);
myObject.function1(10); // Changes x to 10
于 2013-07-08T13:47:23.673 回答
-2
如果您使用的是 lodash ( http://lodash.com ) 或下划线 ( http://underscore.com ) 之类的库,则可以使用 _.bind 函数为该函数提供特定的“this”范围。
这是来自他们在http://lodash.com/docs#bind中的示例
var func = function(greeting) {
return greeting + ' ' + this.name;
};
func = _.bind(func, { 'name': 'moe' }, 'hi');
func();
// → 'hi moe'
于 2013-07-08T13:50:34.783 回答