前言

最近有了点新的感触,如果想在前端上走得越来越远,那么我的核心竞争力在哪呢。之前总想着学着张鑫旭大神一样做一个偏前的前端,但仔细想想偏前的前端需求又有多少呢,而且也可能是我不想在复杂的代码中静下心来读吧,所以在js上的基础并不扎实。于是决定狠下心来重新研究一下js,本来想读一下jquery源码,但是发现js基础还是太差,很多东西读不懂,所以决定重新读一下js的基础语法部分。

js对象

整理这篇文章的时候,又重新整理了一下之前写的js对象整理文章点击这里跳转

JS原型链

JS原型链可以说是JS的核心属性之一了,那么什么是JS原型链呢。假设有一个对象o,这时候想查找o的属性x,即o.x,如果存在那么自然能直接返回,但是假如说对象o不存在属性x呢,这时候将会在o的原型对象中继续查找,若没有则继续向上查找,直到找到或原型是null为止。这样就形成了一个链,这个链就是js原型链。

继承

说到原型链,那么就必须要提到继承这个功能,ES5中定义了一个方法,Object.create()方法,括号内两个参数,第一个是对象的原型。第二个可选,用来进一步描述,在JS对象整理一文中有提到。

实例

可以看到,定义了一个属性p继承自o

然后又定义了一个q继承自p,定义了s,这个toString()继承自Object,将p展开自_proto_,可以看到q的属性z,q的原型的属性y,以及q的原型的原型的属性x,以及最后的Object原型。

最后的结果展示了原型链的查找,q本来没有x和y属性,于是从其原型查找,最终找到,返回结果。