如何以正确的方式授予对对象内部属性的访问权限?这就是破坏我的应用程序的原因:
我有一个处理数组的对象(此处简化):
function ListManager() {
var list = [],
add = function (element) {
list.push(element);
},
clear = function () {
list = [];
};
return {
add: add,
clear: clear,
list : list
};
};
但是我在使用它时得到了这个:
var manager = new ListManager();
manager.add("something");
manager.clear();
console.log(manager.list.length); // <= outputs "1"!
单步执行代码可以看出,在clear方法中,list
变成了一个新数组。但从 ListManager
外部来看,列表并未被清除。
我做错了什么?
最佳答案
这是因为 clear
设置的是 var list
的值,而不是从 ListManager() 返回的对象上的
。您可以使用.list
this
来代替:
function ListManager() {
var list = [],
add = function (element) {
this.list.push(element);
},
clear = function () {
this.list = [];
};
return {
add: add,
clear: clear,
list : list
};
}
关于Javascript:内部数组未重置为外部对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23944325/