Моя мотивация для дополнения Object заключается в том, что я хочу иметь возможность легко обрабатывать объекты, предназначенные для простого хранения данных (например, «hashmap» в Java).Я хочу легко сделать hashmap.size ().
Допустим, у моего объекта есть свойство objData, которое было пустым при создании следующим образом:
var objData = {};
У моего объекта есть несколько методов, которые могутдобавить данные в objData следующим образом:
this.objData[key1name] = data1;
И у моего объекта также есть несколько методов, которые обращаются к objData:
if(this.objData.size() == 0):
Конечно, такого метода не существует.Вот моя мотивация для дополнения объекта Object:
Object.prototype.getOwnPropertyCount = function ( ) {
var count = 0;
for(var item in this) {
if (this.hasOwnProperty(item)) {
count += 1;
}
}
return count;
};
Теперь я должен быть в состоянии сделать:
if (this.objData.getOwnPropertyCount() == 0)
или:
if(!objData.getOwnPropertyCount())
Но вНа самом деле я получаю ошибки, когда пытаюсь загрузить страницу, совершенно не связанную с каким-либо кодом, который я написал.Я получаю сообщения об ошибках в Google Maps api main.js.Voodoo.
Поэтому я изменяю свое увеличение, чтобы дополнить фактический объект вместо Object.prototype:
Object.getOwnPropertyCount = function ( ) {
//calculate the count
return count;
};
И теперь я получаю следующую ошибку в Firefox:
this.objData.getOwnPropertyCount is not a function
Что мне здесь не хватает?