如何在javascript中为root类对象添加新方法?

时间:2014-06-20 02:07:03

标签: javascript oop

我想在javascript中向对象类添加一个名为size的新方法。

var obj = {here: {is: "an"}, object: 2};
object.prototype.size = function() {
var obj=this;
var size = 0, key;
for (key in obj) {
    if (obj.hasOwnProperty(key)) size++;
}
return size;
};

console.log(obj.size());

obj是typeof对象,我将对象的新函数添加为object.prototype.size = function(){}

但是当我运行它时,firefox会给我错误:

ReferenceError: object is not defined (line 10)

您可以在此处查看代码:(http://jsbin.com/cisasewo/1/edit

当我将方法更改为:

Object.prototype.size = function() {
var obj=this;
var size = 0, key;
for (key in obj) {
    if (obj.hasOwnProperty(key)) size++;
}
return size;
};

当它调用时,它只是给我函数的大小而不是函数的大小? 为什么?如何在javascript中将size函数添加到对象类?

2 个答案:

答案 0 :(得分:1)

您的第二次实施是正确的。你只需要改变

console.log(obj.size)

console.log(obj.size())

答案 1 :(得分:0)

我认为它应该像这样工作:

Object.prototype.size = function() {
var obj=this;
var size = 0, key;
for (key in obj) {
    if (obj.hasOwnProperty(key)) size++;
}
return size;
};

var t = new Object();
t.a = 1;
alert(t.size());  ///result is 1 because property a is defined