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__进行直接访问,以此形成了原型链。
  • 相关阅读:
    输入形如"a-b,b-c,b-d"的字符串,当作相邻路径,计算最远路径
    即时通信软件后端API文档
    Django中,使用redis作为缓存
    Django中,websocket实时通信设置概要
    在Django中,自定义User模型,使用token鉴权,实现注册、登录、修改密码等API
    Django中,用rest_framework写API
    偶尔练习一下,go语言做题目
    关于邮政储蓄卡内钱被盗的思考
    浅谈图片上传之剪切
    JavaScript学习笔记
  • 原文地址:https://www.cnblogs.com/Syinho/p/12827651.html
Copyright © 2011-2022 走看看