原型链

作者: 王帅同学 | 来源:发表于2018-11-06 16:47 被阅读0次
    • 原型链

      • 函数的原型对象prototype

      函数都有prototype属性指向函数的原型对象【只有函数根除外】

      • 原型对象的构造函数constructor
      • 内部原型(__proto__),原型链就是通过这个来完成的
      1. 所有对象都有__proto__属性(非标准属性,但是所有浏览器都实现了)【null除外】
      2. Object是构造函数,也是对象,Object的prototype是所有对象的根。
      3. Function是函数对象的构造函数。Function的原型对象是所有函数的根,而它的内部原型是Object的原型对象,这是关键
    1. f对象的__proto__内部原型指向了Object的构造函数原型对象,对象实例就可以访问原型对象上的方法

    Object === Object.prototype.constructor //==>true

    1. Object的构造函数的prototype属性指向了Object原型对象,反过来Object原型对象也有个属性constructor指向了Object的构造函数,就是一个相互的指向关系


      2018-11-06_134048.png
      2018-11-06_134234.png

      - 先搜索自己有没有这个属性,如果没有就去构造函数原型上找

    函数为什么是对象,因为函数的prototype的__proto__指向Object的原型对象

    原型链图解
    //以下是原型链
    m.__proto__ === Dog.prototype
    //==> true
    Dog.prototype.__proto__ === Object.prototype
    //==> true
    Object.prototype.__proto__ === null
    //==> true
    
    构造函数总结

    构造函数的私有属性——指向——Function原型

    Object总结

    Object私有属性指向——Function原型

    私有属性总结

    实 例对象的私有属性——指向——构造函数原型
    构造函数原型的私有属性——指向——Object原型
    Object原型的私有属性——指向——null
    Function的私有属性——指向——Function原型
    Function原型的私有属性——指向——Object原型

    constructor属性总结

    原型的constructor属性都指向——该函数
    函数的 prototype 属性都指向——该函数对应的原型

    
    
    
    
    //---以下是底层原型---
    Dog.__proto__ === Function.prototype
    //==> true
    Function.prototype === Function.prototype
    //==> true
    Function.__proto__ === Function.prototype
    //==> true
    typeof Function.prototype
    //==>function
    Function.prototype
    //==>f(){}
    Function.prototype.__proto__ === Object.prototyoe
    //==> true
    // **所有的函数式Object对象的实例,也就是说函数也是个对象**
    Object.__proto__ === Function.prototype
    //==> true
    
    • 闭包
      • 函数的作用域:函数作用域与全局作用域
      • 没有块级作用域
      • 闭包的使用
      • 沙箱模式

    相关文章

      网友评论

          本文标题:原型链

          本文链接:https://www.haomeiwen.com/subject/izfuxqtx.html