美文网首页
prototype和__proto__的关系是什么

prototype和__proto__的关系是什么

作者: 异彩_c7a6 | 来源:发表于2018-04-26 14:36 被阅读0次

    看了很多文章来介绍 这个问题,想总结一下自己的一些理解

    首先先定义一下,

    prototype    是原型对象     显性原型   (是一个对象,只有函数对象才有这个属性)

    __proto__  是原型链指向对象  隐性原型    (指向构造函数的 原型对象)

    js  一切皆对象的思想  

    null  -> object, Function ->  Number, String, Array, RegExp, Boolean -> 实例对象

    Object.prototype    是个对象  是万物的始祖   万物始祖的原型链 是null  Object.prototype.__proto__ === null

    Object.__proto__   是个函数对象     Object.__proto__ === Function.prototype  函数始祖

    Function.prototype   是个函数对象    包装着所有 Function 的一些独有的属性       Function.prototype 是所有函数的始祖 

        不过他是 这个始祖的 原型链指向的是 万物始祖 也就是  Object.prototye

        Function.__proto__ 是个函数对象   Function.__proto__ === Object.__proto__  === Function.prototype 

        Function.__proto__.__proto__ === Function.prototype.__proto__ === Object.prototype  万物始祖

       可以说 是 Function 创造的 Object , 但 Function 原型链的原型链,原型的原型链又是指向 Object的原型。

    搞清楚  Object ,Function  其他的构造对象,就很easy 了

    ( Number, String, Array, RegExp, Boolean ).prototype === 都各有各的特性。

    ( Number, String, Array, RegExp, Boolean ).__proto__  === Function.prototype  === Function.__proto__   === 等于函数始祖 

    自己写的 构造函数,跟上面一样。。

    function Person() {}

    Person.prototype   是个对象  person : { construction: 指向构造函数本事,__proto__: 始祖对象(Object.prototype) }

    Person.__proto__ 是个 函数对象   ===  Function.prototype  函数的始祖

    var xiaoMing = new Person()

    xiaoMing.__proto__ === Person.prototype  是个对象。

    另一种对象

    var xiaoHong = {}

    xiaoHong.__proto__ ===  Object.prototype

    看懂上面,应该就差不多哦了。。。

    相关文章

      网友评论

          本文标题:prototype和__proto__的关系是什么

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