Javascript——对象原型与原型链

  • 了解函数属性——prototype
    • prototype是每一个函数天生自带的属性,prototype属性又指向一个prototype对象,prototype属性和prototype对象是两个不同的东西
    • prototype(原型对象)对象内部有一个constructor属性,constructor属性指向一个constructor对象,constructor对象就是这个函数本身
    Javascript——对象原型与原型链
    文章图片

  • 了解函数属性——__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——对象原型与原型链
    文章图片

  • 了解对象访问机制
    • 当访问一个对象成员的时候,如果对象本身有该成员,则直接返回结果,停止查询;如果本身没有,则自动去 __proto__ 上访问查找,如果还没有,继续去__proto__ 上访问查找,直到顶级对象的 __proto__都没有就返回 undefined
    • 每一个函数天生自带一个属性 prototype属性,是一个对象
    • 每一个对象天生自带一个属性 __proto__属性,用于指向所属构造函数的 prototype
    • 当一个对象没有准确的构造函数来实例化时,那么默认看作是内置构造函数 Object 的实例对象
  • 原型
    • 原型是每个函数天生自带的一个叫做 prototype属性,prototype属性指向寒素的prototype原型对象
    • prototype中的constructor属性(构造器)指向当前原型对象所属的构造函数
    Javascript——对象原型与原型链
    文章图片

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

    【Javascript——对象原型与原型链】Javascript——对象原型与原型链
    文章图片

    推荐阅读