Javascript中类属性与函数原型的区别

时间:2009-08-31 02:29:01

标签: javascript

我喜欢在Javascript中学习Class Property和Prototype之间的区别我的意思是在代码中显示:

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);代码不会做同样的事情吗?

3 个答案:

答案 0 :(得分:19)

Rectangle.UNIT静态类属性。它只能在Rectangle类对象上访问。在任何Rectangle实例上都无法访问它。

Rectangle.prototype.UNIT是一个原型属性,可以在Rectangle实例上访问。

如果您创建的课程Square继承自Rectangle,则Square 的任何实例都将共享相同的原型属性,但不是< / b>任何静态类属性。

您可能会发现这些文章很有用(虽然可能有点模糊):

答案 1 :(得分:2)

Class-Based vs. Prototype-Based Languages @ Mozilla开发人员中心。近!

答案 2 :(得分:1)

Rectangle.UNIT类似于类静态成员,而Rectangle.prototype.UNIT是本地成员。看起来你想要Rectangle.UNIT,因为你只需要一个对象的静态实例。