我增加 Object 的动机是我希望能够轻松处理旨在简单存储数据的对象(如 Java 中的“hashmap”)。我想轻松地做 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())
但实际上,当我尝试加载与我编写的任何代码完全无关的页面时,我会遇到错误。我在谷歌地图 api 的 main.js 中遇到错误。巫毒教。
所以我改变我的扩充来扩充实际的 Object 而不是 Object.prototype:
Object.getOwnPropertyCount = function ( ) {
//calculate the count
return count;
};
现在我在 Firefox 中收到以下错误:
this.objData.getOwnPropertyCount is not a function
我在这里想念什么?