原型链
大约 2 分钟
构造函数
什么是构造函数
constructor
返回创建实例对象时构造函数的引用。此属性的值是对函数本身的引用,而不是一个包含函数名称的字符串。
原型
prototype
JavaScript
是一种基于原型的语言 (prototype-based language),这个和 Java
等基于类的语言不一样。
每个对象拥有一个原型对象,对象以其原型为模板,从原型继承方法和属性,这些属性和方法定义在对象的构造器函数的 prototype
属性上,而非对象实例本身。
原型链
每个对象拥有一个原型对象,通过 __proto__
指针指向上一个原型,并从中继承方法和属性,同时原型对象也可能拥有原型,这样一层一层,最终指向 null
。这种关系被称为原型链 (prototype chain),通过原型链一个对象会拥有定义在其他对象中的属性和方法。
场景:现在有一个Parent函数,它拥有prototype
属性指向它的原型也就是Parent.prototype
,Parent.prototype拥有constructor
属性指向函数本身。我们通过new
创建它的实例对象p,实例对象p拥有_proto_
属性也就是对象的原型链,指向Parent的原型Parent.prototype
。