javascript 原型和原型链
前言
javascript 是基于原型继承的语言,熟悉其原型规则以及原型链非常有必要。此随笔记录对原型和原型链、继承的学习,以及对 instanceof
、new
、class
等关键字的理解。
关于原型和原型对象
原型是一个名为 prototype
的属性,每当创建一个函数时,该函数就会自带该属性,而该属性指向一个对象,称为原型对象。而对于对象来说,每个实例对象都有一个私有属性(__proto__),其指向它的构造函数的原型对象(prototype),而每个原型对象包含一个属性(constructor),其指向对象的构造函数。参考自 [MDN](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Inheritance_and_the_prototype_chain)。
区分以下几个属性:
- prototype:由构造函数创建的对象都有该属性,指向该对象的原型对象
- __proto__:所有实例对象都有该属性,指向它的构造函数的原型对象,例
a.__proto__ === A.prototype
- constructor:所有原型对象都包含的属性,指向对象的构造函数,例
A.prototype.constructor === A