我喜欢在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);
代码不会做同样的事情吗?
答案 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,因为你只需要一个对象的静态实例。