有没有办法访问在javascript闭包中声明的变量?
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
<script type="text/javascript">
var CLOSURE_VAR = (function() {
var privateVar = {
arr: []
};
return {
setVar: function(name,name2) {
privateVar['arr'][name] = name2;
},
getVar: function(name) {
return privateVar['arr'][name];
},
getPrivateVar: function(name) {
return privateVar[name];
}
};
}());
function initializeArr(name) {
CLOSURE_VAR.setVar(name,"y");
CLOSURE_VAR.setVar("def","z");
}
function checkVar(name) {
alert(CLOSURE_VAR.getVar(name));
console.log(CLOSURE_VAR.getPrivateVar('arr')+"--------------------");
alert(CLOSURE_VAR.getVar("def"));
}
</script>
</head>
<body onload="initializeArr('abc')">
<a href="#" onclick="checkVar('abc')">hello</a>
</body>
</html>
在页面加载时,我将值插入数组中。当我单击链接时,我想获取像 [abc: "y", def: "z"] 这样的数组(带有数据(,但 MODULE.getPrivateVar('arr'( 返回空白;
您声明arr
为数组而不是对象。
运行以下代码片段:
var CLOSURE_VAR = (function() {
var privateVar = {
arr: {}
};
return {
setVar: function(name, name2) {
privateVar['arr'][name] = name2;
},
getVar: function(name) {
return privateVar['arr'][name];
},
getPrivateVar: function(name) {
return privateVar[name];
}
};
}());
function initializeArr(name) {
CLOSURE_VAR.setVar(name, "y");
CLOSURE_VAR.setVar("def", "z");
}
function checkVar(name) {
console.log(CLOSURE_VAR.getVar(name));
console.log(JSON.stringify(CLOSURE_VAR.getPrivateVar('arr')) + "--------------------");
console.log(CLOSURE_VAR.getVar("def"));
}
initializeArr('abc');
<a href="#" onclick="checkVar('abc')">hello</a>
你看?现在正在打印对象。
- 我已将
arr
从Array[]
更改为Object{}
. - 我使用
stringify
将该对象的版本作为字符串获取。