如果这是一个简单的问题,请耐心等待。在javascript中,如何创建一个具有所选功能范围的变量?例如,我想要变量var1,可以使用function1()和function2()进行更新,但不能使用任何其他函数进行更新。有可能吗?
答案 0 :(得分:4)
可以通过使用IIFE创建闭包来实现此目的:
(function() {
var secretVar = 1;
window.func1 = function() { };
window.func2 = function() { };
})();
现在只有func1()
和func2()
才能访问secretVar
答案 1 :(得分: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
答案 2 :(得分:1)
您必须定义具有受限范围的那些功能
var scope = function() {
var scopedVariable = "Hi";
var func1 = function() { /* hi */ }
var func2 = function() { /* hi */ }
}
// scopedVariable is undefined
答案 3 :(得分:1)
(function() {
var a = 1;
window.inc = function() {
a++;
}
window.showA = function() {
alert(a);
}
})();
inc();
showA();
答案 4 :(得分:-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'