属性搜索原则

访问一个对象的成员的时候,首先是在实例中找,没有找到, 就去原型中找, 但是原型中没有怎么办?

原型链

每一个对象都有原型属性,那么对象的原型属性也会有原型属性,所以这样就形成了一个链式结构,我们称之为原型链。

属性搜索原则

所谓的属性搜索原则,也就是属性的查找顺序,在访问对象的成员的时候,会遵循如下的原则:

  1. 首先在当前对象中查找,如果找到,停止查找,直接使用,如果没有找到,继续下一步

  2. 在该对象的原型中查找,如果找到,停止查找,直接使用,如果没有找到,继续下一步

  3. 在该对象的原型的原型中查找,如果找到,停止查找,直接使用,如果没有找到,继续下一步。

  4. 继续往上查找,直到查找到Object.prototype还没有, 那么是属性就返回 undefied,是方法,就报错xxx is not a function