具有所选函数作用域的变量
Variable with scope for the selected functions
如果这是一个简单的问题,请耐心等待。在javascript中,如何创建一个对所选函数具有作用域的变量?例如,我想要变量var1,它可以用function1()和function2()更新,但不能用任何其他函数更新。有可能吗?
可以通过使用IIFE:创建闭包来实现这一点
(function() {
var secretVar = 1;
window.func1 = function() { };
window.func2 = function() { };
})();
现在只有func1()
和func2()
能够访问secretVar
您可以通过以下方式创建作用域:
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
您必须用受限范围的来定义这些函数
var scope = function() {
var scopedVariable = "Hi";
var func1 = function() { /* hi */ }
var func2 = function() { /* hi */ }
}
// scopedVariable is undefined
(function() {
var a = 1;
window.inc = function() {
a++;
}
window.showA = function() {
alert(a);
}
})();
inc();
showA();
如果您使用的是像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'
相关文章:
- 当我更新另一个作用域变量时,作用域变量会自动更新
- 如何在隔离作用域指令中访问此作用域变量
- 正在向构造函数添加作用域变量
- 如何在angularjs中将多个作用域变量传递到自定义指令中
- 作用域变量未从状态父控制器继承到子控制器
- 插槽:访问作用域变量
- 在另一个作用域变量中使用AngularJS作用域变量
- 在Angular.js中通过检查作用域变量进行过滤
- 如何更新作为属性传入的作用域变量
- Node.js中的垃圾收集作用域-变量将保持设置状态多长时间
- 从$http.get调用更新Angular作用域变量
- AngularJS ui路由器:访问子作用域变量
- 访问AngularJS中函数中的作用域变量
- 为什么Angular 1.5双向绑定在将作用域变量传递给组件绑定时失败
- 修改作用域变量后,未更新作用域绑定
- 控制器作用域变量在刷新之前未加载
- 将Angular作用域变量的字符串描述传递给指令
- 将内部作用域变量绑定到外部“模板”
- 无法在 $.post 回调中设置作用域变量
- 如何从在 JS 中用作参数的匿名函数中分配外部作用域变量