2009-08-31 35 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,因为你只需要一个对象的静态实例。

相关问题