0
我有一個關於JS的小問題。它類似於這個帖子:來自@ADC的here,有一個小警告。JavaScript中的只讀集合或迭代器
在他的代碼,他創建了一個Java腳本對象:
var AssocArray = function(){
var collection = new Object();
this.add = function(id, o){
collection[id] = o;
}
this.remove = function(id){
delete collection[id];
}
this.getById = function(id){
return collection[id];
}
this.get = function(){
var res = collection;
return res;
}
}
這是一件非常接近我需要做的。他的問題是爲get()訪問器創建一個只讀屬性,他通過克隆集合私有變量來解決這個問題。
我的問題是我不想創建一個克隆。我需要的是將單個元素提供給消費者,但阻止他們從get()成員返回的數組中添加新元素。相反,他們應該使用add(id,o)成員來添加新項目,而不是向get()返回的克隆添加新的東西。
這可能嗎?是否有可能只創建或返回集合變量的迭代器,以防止用戶修改數組,而不是使用添加/刪除成員?
我想不出任何本地的「迭代器」,但你可以創建自己的「迭代器」類。你也可以'切片()'私人收藏(淺拷貝),但是這不能修復深層引用。 – Ian 2014-09-24 02:19:13