继承与原型链
文章目录
原型链在js中是比较重要的一个知识点,js本身就是基于原型的,非常有必要理解js的原型链与继承相关知识。
基于原型链的继承
js对象都会有一个指向一个原型对象的链,在试图访问对象的属性时,不仅仅会在对象本身上寻找,还会在该对象的原型链上继续往上寻找,一直找到匹配的属性或者到达原型链的末端。
1 | const a = function () { |
js便是这样通过原型链来实现继承的,如果在实例对象obj中找不到属性,便在obj.proto__中寻找,找不到继续在obj.__proto.__proto__里寻找,一直到原型链末端null便没有下一个__proto__了,没找到就返回undefined
__proto__不是js标准里的,不用这个属性的好。在ECMAScript标准中是obj.[[Prototype]],从ES6开始使用Object.getPrototypeOf()和Object.setPrototypeOf()来访问修改[[Prototype]]。
在遍历对象属性的时候如果不想遍历原型链,可以使用Object实例对象的hasOwnProperty方法,或者Object.keys()