我一直在使用JavaScript关闭,使它们本地的返回功能,以保护变量,如:的Javascript关闭,保持外对象
closure = function() {
var secretVar = 'Secret';
return {
"msg" : function() {
console.log(secretVar);
}
};
}();
console.log(closure.secretVar); // Undefined
closure.msg(); // Secret
我觉得我有一个相当不错的把握,让我有能力控制如何访问内部变量。
我现在遇到了这个问题
closure = function() {
var secretVar = ['Secret One','Secret Two'];
return {
"del" : function(modMe) {
modMe = secretVar;
modMe.slice(1,1);
console.log(modMe);
}(secretVar),
"secretVar" : function() {
console.log(secretVar);
}
};
}();
closure.del(); // Secret One
closure.secretVar(); // Secret One
我想closure.del()返回秘密之一,但我想secretVar到仍然不变,然而,事实并非如此。 del()函数修改引用而不是副本,并且我不确定如何获取它以复制secretVar并修改它。
我猜这将是在
(function(y) {
//..Body that changes y
})(secretVar)
的形式,但我一直没能得到那个工作。有任何想法吗?
我假设你的意思'slice',而不是'splice' – Robert 2010-11-09 19:30:38