我看到一位大神在说JavaScript三座山:
原型和原型链
上下文和范围
与单线程异步
没错。 原型和原型链对JS来说可以说是非常难以理解的内容。 想成为大神,必须翻越这三座山。 今天我们来翻一下第一座山——原型和原型链
首先,记住一句话:
每个函数都有prototype属性。 每个对象都有__proto__属性。
让我们声明函数foo,看看其prototype是什么:
我们在浏览器控制台上得到了结果:
我们熟悉的JS嵌入对象、String、Number、Array等由构造函数定义,在typeof中验证他们都是函数。 既然是函数,就一定有prototype属性。
实际上,prototype属性是指向对象的指针。 如上所述,每个对象都有__proto__属性。
让我们看看Array.prototype.__proto__指的是谁。
我看到大家都指着Object.prototype。 Object.prototype指的是谁呢?
指向了空值。 也就是说,原型链的顶端是空的,“万物皆空”啊。 ^_^
自从原型链通过隐形__proto__链接以来,继承也通过隐形__proto__实现,instanceof也在隐形__proto__级别1上进行搜索今天就简单做这么多吧! 如果在网上调查一下原型和原型链的指向图,我想会得到更深的认识。