美文网首页
JS中的原型与原型链

JS中的原型与原型链

作者: 丶stan | 来源:发表于2019-07-10 11:14 被阅读0次

    JavaScript中所有的对象都有它自己的构造函数。例如:

    var number = new Number();
     var string =new String();
    var boolean = new Boolean();
    var fun = new Function();
    var obj = new Object();
    

    我们知道一个number类型的变量也可以调用对象的toString方法,就是因为虽然number本身不具有tostring方法.但是number有一个proto属性,这个属性包含了对象的toString方法。所有实际上number调用toString方法时是对number.proto.toString()的调用。这个proto就是对象对于其共有属性的引用,同时在其构造函数上也存在一个prototype属性也指向该对象的共有属性。

    所以我们可以得出一个推论: 对象.proto === 对象的构造函数.prototype。那么:

    var number = new Number();
    number._proto_ === Number.prototype;
     var string =new String();
    string._proto_ === String.prototype;
    var boolean = new Boolean();
    boolean._proto_ === Boolean.prototype;
    var fun = new Function();
    fun._proto_ = Function.prototype;
    var obj = new Object();
    obj._proto_ = Object.prototype;
    

    然而我们知道构造函数本身也是对象,所有我们是不是可以推轮得出:

    Number.prototype._proto_ === Object.prototype;
    String.prototype._proto_ === Object.prototype;
    Boolean.prototype._proto_ === Object.prototype;
    

    另外,由于所有的函数都是由Function构造出来的。所有

    Number._proto_ === Function.prototype;
    Object._proto_ === Function.prototype;
    Function._proto_ === Function.prototype;
    

    这样一来,就形成了一种链式的数据结构,我们就叫这种为原型链。

    另外:

    Object.prototype._proto_  === null;
    

    相关文章

      网友评论

          本文标题:JS中的原型与原型链

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