原型(prototype)
定义
每个函数都有prototype属性,称之为原型
属性值是一个对象,因此原型也称为原型对象
作用
1.可以存放一些属性和方法
2.实现继承
const arr = new Array(1, 2, 3)
arr.reverse() // 翻转
arr.sort() // 排序
上述代码,构造函数Array的原型(Array.prototype),已经挂载了很多的方法(内置的 ),可以共享给所有的数组实例使用
构造函数生成的实例 arr,可以使用prototype原型上的这些方法
隐式原型 proto
定义
每个对象都有__proto__属性,类型为对象
作用
这个属性指向它的原型对象
注:也可理解为 __proto__指向的是构造函数的原型对象
const arr = new Array(1, 2, 3)
console.log(arr.__proto__ === Array.prototype) // true
上述代码,说明问什么实例arr可以使用原型中的方法
原型链
对象都有__proto__属性,这个属性指向它的原型对象,原型对象也是对象,也有__proto__属性,指向原型对象的属性,这样一层一层形成的链式结构称为原型链,最顶层找不到则返回null
let obj = new Object({ name: '小明' })
console.log(obj.__proto__ === Object.prototype) // true
console.log(Object.prototype.__proto__) // null
下图以对象的原型链举例