访问闭包外部的变量
Accessing variables outside of closure
var MyClass = (function () {
var _data;
var cls = function () { };
cls.prototype = {
init: function(data){
_data = data;
}
};
cls.foo = _data;
cls.bar = 1;
return cls;
})();
var someData = { foo: true };
var cls = new MyClass();
cls.init(someData);
console.log(MyClass.foo); //undefined
console.log(MyClass.bar); //1
为什么MyClass.foo
不在这里?它是在init()
方法中设置的,我在它上面运行。因此它应该返回{ foo: true }
。我错过了什么?
cls.foo = _data;
不会将cls.foo
别名为_data
。它只是复制_data
的值,在执行这行代码时,这个值是undefined
。
cls.foo
设置在init
中,或者(更好)将cls.foo
设置为动态的function() { return _data; }
。我相信这就是你想要的:
function MyClass() { }
MyClass.prototype.init = function (data) {
MyClass.foo = data;
};
MyClass.bar = 1;
现在它将按预期工作:
var someData = { foo: true };
var cls = new MyClass;
cls.init(someData);
console.log(MyClass.foo);
console.log(MyClass.bar);
查看这里的演示:http://jsfiddle.net/gTDZk/
相关文章:
- 将变量传递给外部Javascript
- 访问函数外部的变量
- 如何在定义js文件后为外部javascript文件设置变量
- 存储$http如何从$http函数(Angularjs)外部获取可访问变量中的响应
- 像createComment这样的各种自定义变量名在内联javascript中被覆盖,但在外部js中没有.为什么?
- 在使用cq:include包含外部JS之前,如何在JSP中包含全局JS变量
- 如何在外部访问本地变量
- 定义函数时,如何捕获外部变量的当前值
- 如何在外部文档中使用javascript将文本区域的内容保存为变量
- 使用在函数外部声明的变量的 Javascript 返回值 + undefined
- 为什么在中声明具有外部访问权限的变量
- 匿名自执行js函数内部的全局变量在外部仍然可用
- 在php中为变量提供外部作用域
- JavaScript 变量使用外部函数
- 在JavaScript中,变量变为循环外部的NaN
- 将外部控制器的范围变量设置为角度
- 如何从变量外部访问JavaScript对象
- JavaScript变量外部函数不保留值
- Javascript+jQuery UI:将JSON变量外部化到文件后,如何读回值
- 访问变量外部 foreach Jquery