2011-09-05 72 views
5

我已經在JavaScript/JQuery中做了大量的編程。什麼時候應該在JavaScript中使用「prototype」

但我從來沒有使用過「原型」。事實上,我不知道它的意思。

你有一個實用的例子,它有用嗎?

+5

這可能意味着2件事:一個JavaScript框架和一個JavaScript方法來擴展和定義對象。兩者完全不同。不確定你說的是哪一個。 –

+0

這個問題不明確。 lib或obejcts屬性? – user278064

+1

您應該閱讀:[MDN - 面向對象的JavaScript簡介](https://developer.mozilla.org/En/Introduction_to_Object-Oriented_JavaScript)。 –

回答

9

最簡單的例子:

function Foo() { 
    this.bar = function() { 
     return 42; 
    } 
} 

現在,只要你想,你可以創建Foo許多實例,調用bar()

var a = new Foo(); 
var b = new Foo(); 

即使盡管這兩個對象都有bar()方法在兩種情況下都完全相同,但這些方法是不同的。實際上,每個新的Foo對象都會有這個方法的新副本。

在另一方面:

function Foo() {} 
Foo.prototype.bar = function() { 
    return 42; 
}  

具有相同的最終結果,但該函數只存儲一次在對象prototype而不是在對象本身。如果您創建了大量的Foo實例並想要保存一些內存,這可能是一個難題。

2

假設你是問有關的Object.prototype,

在JavaScript中的所有對象都從Object下降;所有對象都繼承Object.prototype的方法和屬性,儘管它們可能被覆蓋。例如,其他構造函數的原型會覆蓋構造函數屬性並提供它們自己的toString方法。對象原型對象的更改會傳播到所有對象,除非沿着原型鏈進一步覆蓋了受這些更改影響的屬性和方法。

閱讀this然後可能this

相關問題