字面量修改原型
问题背景
JavaScript高级程序设计中提到用字面量修改prototype会导致实例无法通过[[Prototype]]访问原型
切断实例与新原型之间的联系
解决
使用Object.assign函数 复制需要的属性和方法
function f() {
this.a = 1
}
let a = new f()
console.log(a.__proto__ === f.prototype);
Object.assign( f.prototype,{
b:123,
p() {
console.log(this);
}
})
console.log(a.__proto__ === f.prototype)
a.p() // {a: 1}
a["p"]() // {a: 1}

浙公网安备 33010602011771号