Javascript——对象原型与原型链

  • 了解函数属性——prototype

    • prototype是每一个函数天生自带的属性,prototype属性又指向一个prototype对象,prototype属性和prototype对象是两个不同的东西
    • prototype(原型对象)对象内部有一个constructor属性,constructor属性指向一个constructor对象,constructor对象就是这个函数本身

    Javascript——对象原型与原型链_第1张图片

  • 了解函数属性——__proto__

    • __proto__属性是每一个对象天生自带的属性,指向所属函数的原型对象,实例化对象也是对象,所以也带有__proto__属性
    function Person(name,age){
      this.name = name
      this.age = age
      this.sayHi = function (){     
      console.log('hello')
    }
    let p1 = new Person('Jack',18)
    let p1 = new Person('Rose',20) 

    Javascript——对象原型与原型链_第2张图片

  • 了解对象访问机制

    • 当访问一个对象成员的时候,如果对象本身有该成员,则直接返回结果,停止查询;如果本身没有,则自动去 __proto__ 上访问查找,如果还没有,继续去__proto__ 上访问查找,直到顶级对象的 __proto__都没有就返回 undefined
    • 每一个函数天生自带一个属性 prototype属性,是一个对象
    • 每一个对象天生自带一个属性 __proto__属性,用于指向所属构造函数的 prototype
    • 当一个对象没有准确的构造函数来实例化时,那么默认看作是内置构造函数 Object 的实例对象
  • 原型

    • 原型是每个函数天生自带的一个叫做 prototype属性,prototype属性指向寒素的prototype原型对象
    • prototype中的constructor属性(构造器)指向当前原型对象所属的构造函数

    Javascript——对象原型与原型链_第3张图片

  • 原型链

    • 从任何对象出发,按照 __proto__开始往上查找,最终都能查找到 Object.prototype,那么由__proto__串联起来的对象链状结构叫做原型链
    数组.__proto__ === Array.prototype
    Array.prototype.__proto__ === Object.prototype
    数组.__proto__.__proto__ === Object.prototype

    Javascript——对象原型与原型链_第4张图片

你可能感兴趣的