2014-06-20 83 views
0

我想在javascript中爲對象類添加一個名爲size的新方法。如何在JavaScript中向根類對象添加新方法?

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 =功能(){}

但是當我運行它,火狐給我的錯誤:

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中的對象類?

+1

你是如何調用第2個功能? – danronmoon

+0

你不會把它稱爲一個函數。你需要()後面的大小 – mclaassen

+0

請注意,你不應該這樣做,[或者至少做得正確](http://stackoverflow.com/a/13296897/1048572) – Bergi

回答

1

你的第二個實現是正確的。你只需要改變

console.log(obj.size) 

console.log(obj.size()) 
+0

沒有'console.log'在方法實現中。 'console.log(obj.size)'是一個有效的語句,不會導致給定的錯誤。 – zerkms

+0

@zerkms看看jsbin鏈接 – mclaassen

+0

看看jsbin上的錯誤信息。正如你可能發現的那樣 - 它與函數調用無關,如果你刪除了整個console.log行,這個函數將會持續下去。 – zerkms

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 
相關問題