Я использую 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