美文网首页
2018-09-02JavaScript(7)原型和原型链

2018-09-02JavaScript(7)原型和原型链

作者: Lazy一boy | 来源:发表于2018-09-17 15:32 被阅读0次

    1.所有的对象(Object)都有自己的私有属性proto指向它的原型对象prototype.原型对象也有自己的原型对象,他们通过proto原型链一层一层往上找,直到有一个对象的原型对象为null为止。null没有原型,是这个原型链的终止。

    1.1.几乎JavaScript中的所有对象都是原型链顶端的Object对象的实例。

    1.2对象的.proto ===构造出该对象的函数的.prototype。

    2.JavaScript所有的数据类型都可以用对象的形式表示出来:由于函数是对象,所以我们可以用构造函数的方式使Numeber , Boolean ,String边城对象。下面以Number为例子。

    2.1 var n = new Number(); 7.png

    2.2这里可以看到n有一个 _ proto_指向Number()这个构造函数。这里n是Number的实例,Number是n的原型对象.

    2.3Number()也有自己的_ proto _属性,它指向Object()这个构造函数。既Number()为Object()的实例,Object()为Number()的原型对象。

    2.4可以看到在Object()的属性中有hasOwnProperty这个属性,再往后就是对象的最终原型对象null了.


    8.png

    3.可以看出下面的“公式”。

    var 对象 = new 函数();
    对象.proto = 构造该对象函数的.prototype;
    var n = new Number();
    我们知道n._ proto _ === Number .prototype,因为Number()为n的构造函数。
    那Number._ proto_ 是什么呢?
    由于Number()的构造函数为Object()。
    故Number._ proto_ === Object.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;

    相关文章

      网友评论

          本文标题:2018-09-02JavaScript(7)原型和原型链

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