2013-03-22 61 views
-2

的是這2種結構之間的差異對象VAR VS功能

var bar = { 
    something : value, 
    execute : function() { /* Whatever */ } 
} 

function foo() {  
    this.something = value; 
    this.execute = function() { /* Whatever */ }; 
} 

我的理由是,酒吧是一個靜態的物體,和Foo是必須創建調用新的構造函數

定期對象

這是正確的嗎?或者沒有真正

+2

只要你把它看作是一個比喻來與其他語言進行比較就是正確的。 – 2013-03-22 16:46:43

+0

是的,這看起來正確 – 2013-03-22 16:46:46

+1

@AaronKurtzhals我敢肯定目前的問題是重複的,我們似乎每天都會看到它多次,但可能不是您鏈接到的問題。 – 2013-03-22 16:48:54

回答

1

我假設你的意思是bar之間的差異(如你宣佈它)和

var bar2 = new foo(); 

還有比這不是一個很大的區別barbar2之間,其他的原型爲bar總會是Object的原型屬性(如果您已寫入var bar = new Object(); bar.something = value; bar.execute = function() {...}),而bar2的原型將爲foo(或默認情況下爲Object的原型屬性)的prototype屬性分配的任何內容。

除了原型的問題之外,編寫構造函數主要是爲了方便。

注意與構造方法,你可以使用原型的優勢:

function foo() {  
    this.something = value; 
} 

foo.prototype.execute = function() { /* Whatever */ }; 

隨後的foo所有實例共享相同的execute功能。這比每個foo對象具有新的函數對象更有效率。 (當然,如果你只是創建其中的一個,那麼沒有太大的優勢。)