原型链 & new

122 阅读1分钟

什么是原型链

原型与原型层层相链接的过程即为原型链。

JS在创建对象的时候,该对象都有一个叫做 proto 的内置属性,用于指向创建它的函数对象的原型对象prototype。

原型链的应用

一个对象可以使用其构造函数的prototype上的属性和方法,还可以顺着原型链查找原型上的属性和方法。

原型的查找

  • 先看 student 对象身上是否有dance方法
  • 如果没有,就去其构造函数原型对象 Student.prototype 身上去找
  • 如果没有,就去Student的父类型,Person.prototype身上找
  • 再没有,就去Object.prototype 身上去找
  • 要是还没有,就找无可找了,因为Object.prototype.proto == null. 此时会报错

new一个新对象的过程,发生了什么?

  1. 创建一个空对象 son {}
  2. 为son准备原型链连接 son.proto = Father.prototype
  3. 重新绑定this,使构造函数的this指向新对象 Father.call(this)
  4. 为新对象属性赋值 son.name
  5. return this,此时的新对象拥有了构造函数的方法和属性了