美文网首页程序员
其实原型跟原型链没有啥可讲的

其实原型跟原型链没有啥可讲的

作者: stevemoon | 来源:发表于2016-11-24 21:09 被阅读0次

    什么是原型
    原型也就是指你是从谁那继承的。比如:一个东西是从一个模板里面刻出来的,模板就是原型,而你,就是通过模板刻出来的,可以有很多个一样的你。
    规定一下模板的属性啊,接着看。规定,函数这个模板有两个属性:prototype_proto_,而其他对象这个模板只有_proto_这个属性(对比可知,函数也是对象哦)。
    举个简单例子:

    对象a._proto_ === 对象a.constructor.prototype( 原型 )
    这里的 constructor 就是原型的一个属性,也就是模板的一个属性,模板的属性constructor指的是对象a,
    那么对象a再用prototype不就又指向对象a的原型了吗?也就是指向模板。
    

    所以个人总结了一下,原型链就是很简单的东西。

    a = new A();
    

    a的原型(模板)就是A这个构造函数,a是通过A刻出来的,a的爸爸(或者妈妈)就是A
    A的爸爸(或者妈妈)又是谁呢?A是一个构造函数,那么函数是一个对象,是一个具体的对象,那它的爸爸妈妈就是一个抽象的对象 也就是Object
    Object的爸爸妈妈是谁呢,没了,他自己已经到头了,所以它的原型就是null

    再举一个例子:

    var A = function(){};
    var a = new A();
    

    a._proto_ 就是 实例化之前的A ,模板就是function,也就是A.prototype

    Paste_Image.png
    如图,A.prototype就是指的是function这个对象,而constructor就是指向自己本身

    那么 function的模板呢,当然就是Object啦,所以A.prototype._proto_就等价于 function._proto_,具体的function的模板就是Object
    而最高的对象的模板呢,没了,就是null,我想你们应该都明白了吧。看到好多人用图,其实让大家思考的时候大家就按自己的想法走了,不一定都能想象的来。

    所以下面这幅图你们懂了吧?

    Paste_Image.png

    不懂了就继续看上面的分析。

    相关文章

      网友评论

        本文标题:其实原型跟原型链没有啥可讲的

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