Javascript从另一个回调访问对象变量,而不将变量放在全局范围内
Javascript accessing object variable from another callback without placing variable in global scope
我有以下场景。我有一个带有两个回调方法的对象"a",但其中一个回调需要访问另一个回调变量值(用于修改/读取值/更新值)。我想知道在不将变量b放入全局范围的情况下构造此代码的最佳方法是什么。下面是代码和一个jsfiddle。
代码
var a = {
load: function(){
var b = 25;
console.log(b);
},
add : function (b){
console.log('The value of b is '+ b);
}
};
使用闭包:
var module = (function () {
var b; //Scoped to this module
return { //Return object with methods
load: function () {
b = 25; //This refers to the module's b
console.log(b);
},
add: function () {
console.log('The value of b is '+ b);
}
};
})(); //Self invoking function, invokes instantly.
module.load(); //b is now 25.
module.add(); //The value of b is 25
console.log(b); //undefined, out of scope.
现在,所有"私有"变量都直接作用于模块,并且不影响全局作用域。
// Alternative 1: Using a "private" variable
function A(b) {
// seal b in closure
var b = b;
this.load = function(){
b = 25;
console.log(b);
};
this.add = function(){
console.log('The value of b is '+ b);
};
this.getB = function(){
return b;
};
}
// Alternative 2: Using a object property
function A(b) {
// seal b in closure
this.b = b;
this.load = function(){
this.b = 25;
console.log(this.b);
};
this.add = .add = function(){
console.log('The value of b is '+ this.b);
};
}
var a = new A('foo');
var callback = a.load;
// ...
相关文章:
- 在类范围内定义javascript的变量
- 如何根据ajax get请求的成功/失败在适当的范围内更改javascript变量
- JS:增量计数器,不在全局范围内设置计数器变量
- 在全局范围内访问嵌套变量的 Nodejs
- 在(跨浏览器)JavaScript 中,何时必须在局部范围内缓存变量查找
- 全局范围内的变量在 javascript 中无法识别
- 使对象变量在所有“更深”的范围内都是可访问的
- 为什么允许通过原型继承访问另一个闭包范围内的私有变量
- Javascript - 全局变量和全局范围内的变量是否不同(在 jsfiddle 中)
- 由全局范围内的 Web 应用程序声明的全局变量
- 如何在不同的范围内重用变量
- AngularJS:ng-repeat中的变量,没有$scope在其局部范围内
- 是否可以更改外部范围内的变量
- ajax函数内的Javascript变量范围
- Javascript从另一个回调访问对象变量,而不将变量放在全局范围内
- 对象范围内的变量访问
- 为什么if语句不是't在全局范围内寻找变量
- 在Javascript中,如何引用函数范围内的变量,该变量来自在该函数中调用但在其他地方定义的函数
- 遍历循环,在一个范围内随机更改变量的值,但满足所有变量
- 在全局范围内调用变量,并在谷歌应用程序脚本中进行比较