跳至主要內容

原型链

yyshino大约 2 分钟FrontEndJS

构造函数

什么是构造函数

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