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

JS中原型与原型链

作者: 一许青衫一 | 来源:发表于2019-01-15 21:32 被阅读0次

    概述

    关于 JS 中的原型与原型链,看了好几次,但是回头发现还是朦朦胧胧,说明自己并没有彻底弄清楚,所以写下文章,进行总结。

    prototype 属性与 proto 属性

    所有引用类型(函数,数组,对象)都拥有 _proto_ 属性(隐性原型)。
    所有函数都拥有 prototype 属性(仅限函数)。
    实例的隐式原型指向它构造函数的显式原型

    function Person();
    var p = new Person();
    

    例如上面代码所示,创建了函数Person,这里的函数Person就是构造函数。在创建这个构造函数Person的时候,会给这个构造函数自动创建一个实例对象,就叫做原型对象。Person.prototype就是Person的一个实例对象,并且将这个实例对象赋值给了构造函数的属性prototype。
    在这个原型对象中,保存着构造函数Person的所有实例共享的属性和方法。
    只有通过new FuntionName() 而得到的对象才是实例对象,如上面的p。

    构造函数、原型对象和实例

    原型链

    原型链
    每个构造函数都有一个原型对象,原型对象都包含一个指向构造函数想指针(constructor),而实例对象都包含一个指向原型对象的内部指针(proto)。如果让原型对象等于另一个类型的实例,此时的原型对象将包含一个指向另一个原型的指针(proto),另一个原型也包含着一个指向另一个构造函数的指针(constructor)。假如另一个原型又是另一个类型的实例……这就构成了实例与原型的链条。

    相关文章

      网友评论

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

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