美文网首页
原型与原型链

原型与原型链

作者: December1224 | 来源:发表于2019-04-11 19:03 被阅读0次

    JavaScript中除了基本类型外的数据类型,都是对象。但是由于其没有 类(class,ES6引入了class)的概念,如何将所有对象联系起来就成了一个问题,于是就有了原型和原型链的概念。
    每个实例对象(object )都有一个私有属性(称之为 proto)指向它的原型对象(prototype)。该原型对象也有一个自己的原型对象 ,层层向上直到一个对象的原型对象为 null。根据定义,null 没有原型,并作为这个原型链中的最后一个环节。
    事实上 JavaScript 所有数据都可以以对象的形式表现:由于函数是对象,我们可以用构造函数的方法使得 Number、Boolean、String变成对象。

    下面以 Number 为例
    可以用 var 基本类型 = new 对应基本类型的函数() 的方法创建一个新的函数

    var n = new Number() 创建一个 Number 函数,其是一个对象。

    var 对象 = new 函数()

    对象.proto === 对象的构造函数.prototype

    我们已经知道

    var n = new Number()

    n.proto === Number.prototype //true

    那么 Number.proto

    Number 的原型对象是Function,即 Number 是 Function 的实例

    即有

    Number.proto === Function.prototype

    那么同理

    var object = new Object()

    object.proto === Object.prototype

    Object.proto === Function.prototype

    再进一步推断

    var function = new Function()

    function.proto === Function.prototype

    Function.proto === Function.prototype

    相关文章

      网友评论

          本文标题:原型与原型链

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