我一直在使用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