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

Tar*_*rik 10 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);
Run Code Online (Sandbox Code Playgroud)

我知道的东西是原型就像继承对象一样工作,这意味着UNIT将从现在开始显示所有实例,但 Rectangle.UNIT = new Rectangle(1, 1);代码不会做同样的事情吗?

Jam*_*are 19

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

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

如果创建一个Square继承自的类Rectangle,则任何实例Square 将共享相同的prototype属性,但不会共享任何静态类属性.

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