原型链

作者: HAHA_6598 | 来源:发表于2018-08-02 14:51 被阅读0次

    prototype、proto和constructor的关系:

    function Foo(){};

    Foo.prototype.a = 1;

    var f1 = new Foo;

    instanceof

    运算符用来测试一个对象在其原型链中是否存在一个构造函数的 prototype 属性。

    构造函数:

    用来初始化新创建的对象的函数是构造函数。在例子中,Foo()函数是构造函数

    实例对象

    通过构造函数的new操作创建的对象是实例对象。(如f1)

    原型对象及prototype:

    function Foo(){};

    Foo.prototype.a = 1;

    构造函数有一个prototype属性,指向函数的原型对象。通过同一个构造函数实例化的多个对象具有相同的原型对象。经常使用原型对象来实现继承

    constructor

    所有的原型对象都会自动获得一个 constructor(构造函数)属性,这个属性(是一个指针)指向 prototype 属性所在的函数(Foo)

    由于实例对象可以继承原型对象的属性,所以实例对象也拥有constructor属性,同样指向原型对象对应的构造函数

    f1.constructor === Foo

    proto:

    实例对象有一个proto属性,指向该实例对象对应的原型对象

    f1.proto === Foo.prototype

    *【1】函数(Function也是函数)是new Function的结果,所以函数可以作为实例对象,其构造函数是Function(),原型对象是Function.prototype

    【2】对象(函数也是对象)是new Object的结果,所以对象可以作为实例对象,其构造函数是Object(),原型对象是Object.prototype

    【3】Object.prototype的原型对象是null*

    相关文章

      网友评论

          本文标题:原型链

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