原型与原型链

121 阅读1分钟

原型(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可以使用原型中的方法

js_原型.png

原型链

对象都有__proto__属性,这个属性指向它的原型对象,原型对象也是对象,也有__proto__属性,指向原型对象的属性,这样一层一层形成的链式结构称为原型链,最顶层找不到则返回null

let obj = new Object({ name: '小明' })
console.log(obj.__proto__ === Object.prototype)  // true
console.log(Object.prototype.__proto__)  // null

下图以对象的原型链举例

js_原型链.png