Свойство-счетчик в объекте
Здравствуйте. Есть вот такой объект:
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, время: 02:43. |