Я создал коллекцию базового класса/объекта для выполнения повторной задачи. У меня есть CollectionBase, и у меня есть класс Person, который наследует CollectionBase. но моя проблема заключается в том, когда я создаю коллекцию из двух человек, например people1 = new Persons() и persons2 = new Persons(), похоже, что у них есть один и тот же ссылочный объект. Любое предложение о том, как я могу делать каждый раз, я создам новых лиц, создающих новый экземпляр.javascript prototype inheritance override property
См. Это на plnkr; http://plnkr.co/edit/8GPkWO4nKRiskxoRWrkg?p=info
(функция() {
function CollectionBase(){
this.collection = [];
}
Object.defineProperties(CollectionBase.prototype, {
count: {
get: function(){
return this.collection.length;
},
enumerable: true
}
});
CollectionBase.prototype.init = function(){
};
CollectionBase.prototype.get = function(index){
if (index === undefined){
return this.collection;
}
return this.collection[index];
};
CollectionBase.prototype.remove = function(index){
try{
if (index === undefined) throw new Error('index is undefined');
this.collection.splice(index, 1);
}
catch(err){
console.log(err);
}
};
CollectionBase.prototype.update =function(item){
};
CollectionBase.prototype.add = function(item){
this.collection.push(item);
};
function Person(firstName, lastName){
this.firstName = firstName;
this.lastName = lastName;
}
function Persons(){
CollectionBase.call(this);
}
Persons.prototype = Object.create (CollectionBase.prototype);
var persons1 = new Persons();
var persons2 = new Persons();
})();
Я уже заставляю его работать. просто то, что @ jfriend00 сказал, помещает свойство в конструктор базового класса/объекта. но я хочу, чтобы свойство было приватным, так что, если кто-то будет использовать базовый класс/объект, он может заставить использовать метод добавления, удаления и обновления. Любые предложения по этому поводу? – yajra
Это совершенно другой вопрос. Это сообщение в моем блоге может помочь: [* Частная собственность в ES6 - и ES3 и ES5 *] (http://blog.niftysnippets.org/2013/05/private-properties-in-es6-and-es3- and.html). –
Ох я могу взглянуть на это. как вы можете видеть для моего предыдущего поста кода, он использует Object.defineproperties, чтобы я мог настроить способ поведения. – yajra