什么是原型链
原型与原型层层相链接的过程即为原型链。
JS在创建对象的时候,该对象都有一个叫做 proto 的内置属性,用于指向创建它的函数对象的原型对象prototype。
原型链的应用
一个对象可以使用其构造函数的prototype上的属性和方法,还可以顺着原型链查找原型上的属性和方法。
原型的查找
- 先看 student 对象身上是否有dance方法
- 如果没有,就去其构造函数原型对象 Student.prototype 身上去找
- 如果没有,就去Student的父类型,Person.prototype身上找
- 再没有,就去Object.prototype 身上去找
- 要是还没有,就找无可找了,因为Object.prototype.proto == null. 此时会报错
new一个新对象的过程,发生了什么?
- 创建一个空对象 son {}
- 为son准备原型链连接 son.proto = Father.prototype
- 重新绑定this,使构造函数的this指向新对象 Father.call(this)
- 为新对象属性赋值 son.name
- return this,此时的新对象拥有了构造函数的方法和属性了