zoukankan      html  css  js  c++  java
  • js_原型链的问题

    所有的构造函数都是构造函数Function的实例(允许该构造函数直接通过constructor属性访问构造函数Function)

    所有的原型对象都可以近似看成构造函数Object的实例(不允许该原型对象直接通过constructor属性访问构造函数Object)

    示例:

    判断构造函数、实例对象、原型对象之间的关系

    现有构造函数Foo,其实例对象foo,其原型对象Foo.prototype。还有Function构造函数,Object构造函数

    var l = console.log;
    
    function Foo() {}
    var foo = new Foo();
    
    //Foo构造函数
    l(foo.constructor == Foo); //true
    l(Foo.prototype.constructor == Foo); //true
    l(foo.__proto__ == Foo.prototype); //true
    
    //Function构造函数
    l(new Function().constructor == Function); //true
    l(Function.prototype.constructor == Function); //true
    l(new Function().__proto__ == Function.prototype); //true
    
    //Object构造函数
    l(new Object().constructor == Object); //true
    l(Object.prototype.constructor == Object); //true
    l(new Object().__proto__ == Object.prototype); //true
    
    • 所有的构造函数都可以通过prototype属性访问其原型对象。
    • 所有的原型对象都可以通过constructor属性访问其构造函数。
    • 所有的实例对象都可以通过constructor属性访问其构造函数。
    • 所有的实例对象都可以通过__proto__属性访问其原型对象。

    Object构造函数与Function构造函数之间的联系

    所有的构造函数都是构造函数Function的实例(允许该构造函数直接通过constructor属性访问构造函数Function)

    所有的原型对象都可以近似看成构造函数Object的实例(不允许该原型对象直接通过constructor属性访问构造函数Object)

    //所有的构造函数都是构造函数Function的实例(允许该构造函数直接通过constructor属性访问构造函数Function)
    l(Object.constructor == Function); //true
    l(Object.__proto__==Function.prototype);//true
    
    //所有的原型对象都可以近似看成构造函数Object的实例(不允许该原型对象直接通过constructor属性访问构造函数Object)
    l(Function.prototype.__proto__ == Object.prototype); //true
    l(Function.prototype.constructor == Object);//false
    
    • 构造函数Object可以通过__proto__属性访问Function.prototype,也可以通过constructor属性访问Function构造函数。
    • 原型对象Function可以通过__proto__属性访问Object.prototype,但不可以通过constructor属性访问Object构造函数。
    • 综上,可以完全将所有构造函数看做构造函数Function的实例,但只能将原型对象近似看做Object构造函数的实例。因为对象只能与对象之间通过__proto__进行直接访问,以此形成了原型链。
  • 相关阅读:
    Recommended Books for Algo Trading in 2020
    Market Making is simpler than you think!
    Top Crypto Market Makers of 2020
    Top Crypto Market Makers, Rated and Reviewed
    爬取伯乐在线文章(五)itemloader
    爬取伯乐在线文章(四)将爬取结果保存到MySQL
    爬取伯乐在线文章(三)爬取所有页面的文章
    爬取伯乐在线文章(二)通过xpath提取源文件中需要的内容
    爬取伯乐在线文章(一)
    爬虫去重策略
  • 原文地址:https://www.cnblogs.com/Syinho/p/12827651.html
Copyright © 2011-2022 走看看