Свойство-счетчик в объекте
Здравствуйте. Есть вот такой объект:
function Filter() {
this.items = [];
}
let filter = new Filter();
Далее, свойство items наполняется объектами в цикле: ....... filter.items.push(obj[item][i]); ........ Получается массив объектов, как я понимаю. Мне нужно в самом конструкторе объекта, иметь еще одно свойство - count, в котором будет храниться длина массива items. По смыслу это вот так:
function Filter() {
this.items = [];
this.count = this.items.length;
}
let filter = new Filter();
Но, в таком случае, оно всегда равно 0, по идее потому что оно задается когда этот массив пустой, при создании объекта и дальше не изменяется. По идее, можно в цикле и этот счетчик плюсовать, там где массив объектами наполняется, но возможно этот подсчет можно сделать автоматическим?:-? |
[] и так имеет length или count должна быть функцией
или читать шаблоны проектирования %)
function Storage() {
let store = []
return {
get items() {
return store
},
push(item) {
store.push(item)
},
get count() {
return store.length
}
}
}
const store = new Storage()
store.push('one')
console.log(store.items, store.count)
|
свойство можно использовать
function Filter() {
this.items = [];
}
Object.defineProperty(Filter.prototype, 'count', {
get: function() { return this.items.length; }
});
var f = new Filter();
f.items.push(123);
alert(f.count);
|
Alexandroppolus,
SuperZen Спасибо за решения! |
| Часовой пояс GMT +3, время: 04:11. |