2009-08-31 46 views
10

函數原型之間,我想了解在Javascript中我的意思是在代碼中顯示類屬性和原型之間的區別:區別類屬性和Javascript中

function Rectangle(x, y) { 
    this.width = x; 
    this.height = y; 
} 

Rectangle.UNIT = new Rectangle(1, 1); 

Rectangle.prototype.UNIT = new Rectangle(1, 1); 

我所知道的事情是原型那樣工作繼承對象,這意味着UNIT將從現在開始顯示所有實例,但Rectangle.UNIT = new Rectangle(1, 1);代碼不會做同樣的事情?

回答

19

Rectangle.UNITstatic class屬性。它只能在Rectangle類對象上訪問。它在任何Rectangle實例上都不可訪問。

Rectangle.prototype.UNIT是一個原型屬性,可以在Rectangle的實例上訪問。

如果你犯了一個類SquareRectangle繼承的Square任何情況下將共享相同的原型財產,但不任何靜態類屬性。

您可能會發現這些文章有用(雖然也許有點晦澀):

+0

請您詳細說明一下這個問題:「靜態屬性可以在共享給定原型繼承鏈的類之間有所不同。」 – Tarik 2009-08-31 03:17:09

+0

我編輯了我的答案,以澄清和糾正。 – 2009-08-31 03:39:13

1

Rectangle.UNIT就像是一個類的靜態成員,而Rectangle.prototype.UNIT是本地成員。看起來你需要Rectangle.UNIT,因爲你只需要一個對象的靜態實例。

相關問題