JavaScript的三座大山—原型随记 - 掘金 (juejin.cn)
怎么改变原型
看起来只要能改变实例x的隐藏属性__proto__就可以改变x的原型
x.__proto__=原型
但这不是标准推荐的写法,为了设置x.__proto__,推荐的写法是:
const x = Object.create(原型) es6
// 或
const x =new 构造函数 // 会导致x.__proto__===构造函数.prototype es5
原型解决了什么问题
在没有Class的情况下实现继承。以 a ===> Array.prototype ===> Object.prototype 为例,
- a是Array的实例,a拥有Array.prototype的属性
- Array继承了Object
- a是Object的间接实例,a拥有Object.prototype里的属性。
缺点
跟Class相比,不支持私有属性。