美文网首页
原型链补充

原型链补充

作者: Vampire丶_L | 来源:发表于2018-06-12 15:48 被阅读0次

通过近期的一次笔试发现我对原型链的一些属性掌握的不是很好,所以再来写一片文章补充;

关于__proto__属性

下面的请谨记
1,每个对象都有名为__proto__属性
2,每个对象的__proto__属性都指向自身构造函数的prototype
来看代码:

        function func(){};
        var f1 = new func();

        //f1是func的实例,所以f1的__proto__指向func的原型对象
        console.log(f1.__proto__ === func.prototype);//true

        //func的__proto__指向定义它的Function.prototype
        console.log(func.__proto__ === Function.prototype);//true

        //Function由自身构造
        console.log(Function.__proto__ === Function.prototype);//true
        //由上面三个 true可知所有构造函数的__proto__

        //prototype也是对象,所以它的__proto__指向Object.prototype 
        console.log(Function.prototype.__proto__ === Object.prototype);//true
        console.log(func.prototype.__proto__ === Object.prototype);//true 
        //由这两行可知:所有构造函数的prototype的__proto__都指Object.prototype
  
        //Object也是构造函数,所以同上构造函数的__proto__ 指向Function.prototype
        console.log(Object.__proto__  === Function.prototype)//true  

        //Object.prototype作为最终的源头,它的__proto__是null
        console.log(Object.prototype.__proto__ === null);//true
        var  a = {};
        
        //由于a是以字面量方式创建的对象,所以不需要经过Function,a.__proto__属性直接指向Object.prototype
        console.log(a.__proto__ === Object.prototype)
        console.log(a.__proto__.__proto__ === null);//true
        console.log(a.__proto__.constructor === Object);//true
        console.log(a.__proto__.constructor.__proto__ === Function.prototype);//true
        console.log(a.__proto__.constructor.__proto__.__proto__ === Object.prototype);//true
        console.log(a.__proto__.constructor.__proto__.__proto__.__proto__ === null);//true
 console.log(a.__proto__.constructor.__proto__.__proto__.constructor.__proto__ === Function.prototype);//true

最后附上一张图:


1030655-20161031041705971-1605480841.jpg

相关文章

  • 原型链补充

    通过近期的一次笔试发现我对原型链的一些属性掌握的不是很好,所以再来写一片文章补充; 关于__proto__属性 下...

  • Days06 继承,正则表达式

    1.原型补充 原型链:是一种关系,实例对象var p1=new Person();和原型对象person.prot...

  • JavaScript 原型、原型链与原型继承

    原型,原型链与原型继承 用自己的方式理解原型,原型链和原型继承 javascript——原型与原型链 JavaSc...

  • 原型、原型链

    (什么是原型、原型链?有什么作用) JavaScirpt深入之从原型到原型链 图解 Javascript 原型链 ...

  • 原型链&查找规则&作用域链

    原型链(隐式原型链) 属性的查找规则(原型链的查找规则) 作用域链

  • 关于原型原型链的理解

    什么是原型? 什么是原型链? 为什么需要原型,和原型链?

  • 原型链实现继承

    原型链 原型链示意图 使用原型链实现继承 这是怎么回事呢? 原型链在哪? 听我细细道来~ 首先 Teacher 实...

  • 继承

    原型链直接继承 原型链直接继承prototype 原型链继承_prototype属性 继承_构造函数绑定

  • js中的实现继承的几种方式

    大纲:原型链借用构造函数组合继承原型式继承寄生式继承寄生组合式继承 1、原型链: 什么是原型链? 原型链的基本思想...

  • 【原型和原型链】什么是原型和原型链

    【原型和原型链】什么是原型和原型链https://blog.csdn.net/xiaoermingn/articl...

网友评论

      本文标题:原型链补充

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