实例属性为什么在原型上也有一份?

class MyClass {
    prop = 1;
    get prop() {
        return this.prop;
    }
    set prop(value) {
        this.prop = value;
    }
}

let inst = new MyClass();
console.log(inst);

image.png

明明是实例属性 为什么在原型上还有一个prop

阅读 2.5k
2 个回答
class MyClass {
    prop = 1; // 第一个是放在实例上的
    get prop() {...} // 第二个是放在原型上的, 这个get容易造成死循环, 使用时候注意一点
}

因为 JS 的 class 不支持这样声明实例私有变量。只能放到 constructor() 里。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题