美文网首页
理解JavaScript的原型与原型链

理解JavaScript的原型与原型链

作者: 小柴先生 | 来源:发表于2017-04-24 13:41 被阅读46次

    我看到某大神说JavaScript的三座大山:
    1、原型与原型链
    2、上下文环境与作用域
    3、单线程与异步
    说的非常正确,原型与原型链可以说是JS非常不容易理解的内容了,想要成为大神,这三座大山是必须要跨越,今天我们就来翻一下第一座大山——原型与原型链

    每一个函数,都有一个prototype属性;每一个对象,都有一个proto属性。

    我们来声明一个函数foo,看看它的prototype是什么:

    1c670003fc36015480881c670003fc3601548088
    在浏览器控制台我们得到了我们的结果:
    1c6a000288a76cf764ff1c6a000288a76cf764ff
    我们熟知的JS内置对象,String、Number、Array等,都是由构造函数定义的,用typeof验证他们都是function,既然是function肯定都有prototype属性。
    1c680003f90c5546bf431c680003f90c5546bf43
    其实prototype属性是一个指针,指向一个对象,我们上面说了,每一个对象都有一个proto属性,

    我们看看Array.prototype.proto指向谁。

    1c690001747fbefa97761c690001747fbefa9776
    大家看到指向了Object.prototype。那Object.prototype又指向谁呢?
    1c6d000165ff1d4b2f9b1c6d000165ff1d4b2f9b
    指向了null,也就是说,原型链的顶端是null,“万物皆空”嘛!_
    原型链就是通过隐形的proto链接以来的,继承也是隐形的proto实现的,instanceof也是通过隐形的proto一级一级向上查找的。今天就说这么多吧!大家可以上网查一下原型与原型链的指向图,相信你会有一个更深的认识。

    相关文章

      网友评论

          本文标题:理解JavaScript的原型与原型链

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