如何从javascript闭包外部访问数组变量?
有没有办法访问javascript闭包中声明的变量如何从javascript闭包外部访问数组变量?,javascript,Javascript,有没有办法访问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 = {
<!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闭包_var=函数{
var privateVar={
arr:{}
};
返回{
setVar:functionname,name2{
privateVar['arr'][name]=name2;
},
getVar:functionname{
返回privateVar['arr'][name];
},
getPrivateVar:functionname{
返回privateVar[name];
}
};
};
函数初始化名{
闭包_VAR.setVarname,y;
关闭变量setVardef,z;
}
函数checkVarname{
console.logCLOSURE_VAR.getVarname;
console.logJSON.stringifyCLOSURE_VAR.getPrivateVar'arr'+------------;
console.logCLOSURE_VAR.getVardef;
}
缩写为“abc”;
模块定义在哪里?privateVar['arr'][iName]=name2;-在南是什么?参数是name和name2。模块不存在,您的意思是CLOSURE\u VAR,而且您的CLOSURE\u VAR定义错误。在初始化之前,你要写};它应该是};对不起,输入错误。我改正了。@ManasB很好!:-但是,如果我使用object而不是Arraynative,会不会导致性能问题?@ManasB不,事实上,你会得到好处,因为对象是优化的键值对结构。