function Queue(maxSize) {
var array = []; //should be like-private
this.addForSomeTime = function(el) {
if (array.length === maxSize) {
return false;
}
array.push(el);
return true;
}
this.getArray = function() {
return array;
}
}
问题在这里:
var q = new Queue(4);
q.addForSomeTime(0);
q.addForSomeTime(0);
var ar = q.getArray();
ar等于[0,0]。而且,如果我要调用ar.push(1),我也将其推送到q中的“ private”字段中。如何避免这种情况,并从外部操作中保存“私有”字段?也许存在一种返回值但不引用数组的方法?
最佳答案
您始终可以返回数组的副本:
return array.slice();
但是,那只是一个浅表副本,因此数组内的对象仍然可以突变。
也许看一下immutable-js以获得更多选项。
关于javascript - JavaScript中的安全返回专用字段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27456973/