美文网首页
浅谈JS中内置对象的原型与原型链

浅谈JS中内置对象的原型与原型链

作者: 印第安老斑鸠_333 | 来源:发表于2019-02-25 22:39 被阅读0次

    JavaScript 规定,所有对象都有自己的原型对象(prototype)。由于原型对象也是对象,所以它也有自己的原型。因此,就会形成一个“原型链”(prototype chain):对象到原型,再到原型的原型……


    JS内置对象(函数):Function Object String Number Boolean Array

    好,先说上面的这些对象,因为它们都是函数,所以它们一定都是Function构造出的对象。那么它们的 '__proto__' 属性都指向Function的'prototype'属性。换句话说,就是一个对象的原型对象就是与它相对应的那个构造函数的'prototype'属性。

    例如:

        ①,var number = new Number()

                number.__proto__ === Number.prototype

                Number.__proto__ === Function.prototype // 因为 Number 是 Function 的实例

        ②,var object = new Object()

                object.__proto__ === Object.prototype

                Object.__proto__ === Function.prototype // 因为 Object 是 Function 的实例

        ③,var function = new Function()

                function.__proto__ === Function.prototype

                Function.__proto__ === Function.prototye // 因为 Function 是 Function 的实例

    以上我们总结出一个公式:

        var 对象 = new 函数()

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


    原型链是一层套一层,如果一层层地上溯,所有对象的原型最终都可以上溯到Object.prototype,即Object构造函数的prototype属性。也就是说,所有对象都继承了Object.prototype的属性。这就是所有对象都有valueOf和toString方法的原因,因为这是从Object.prototype继承的。

    那么,Object.prototype对象有没有它的原型呢?回答是Object.prototype的原型是null。null没有任何属性和方法,也没有自己的原型。因此,原型链的尽头就是null。

    我总结了一个不好看图,在下面

    一个不好看的图

                                                                                                        引用:

                                                                                                                阮一峰JS教程

    相关文章

      网友评论

          本文标题:浅谈JS中内置对象的原型与原型链

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