js学习笔记 理解原型对象

js高级编程中对于原型对象,之前看的时候并没有很在意,今天看到js中的继承,原型链,于是回过头来重温一下原型模式。

概念1:我们创建的每个函数都有一个prototype(原型)属性,这个属性是一个指针,指向一个对象,而这个对象的用途是包含可以由特定类型的所有实例共享的属性和方法。这一点很像.net中的静态属性和方法。这一点对于代码的重用由很好的帮助,而且对于prototype属性的更改可以是动态的。

  prototype中的属性是所有类成员说共有的。

概念2:constructor——无论什么时候,只要创建了一个新函数,就会根据一组特定的规则为该函数创建一个prototype属性,这个属性指向函数的原型对象。在默认情况下,所有原型对象都会自动获得一个constructor(构造函数)属性,这个属性包含指向一个prototype属性所在函数的指针。而通过这个构造函数,我们还可以继续为原型对象添加其他属性和方法

下图是prototype的调用示意图。

在此,Person.prototype指向了原型对象,而Person.prototype.constructor又只会了Person。原型对象除了包含constructor属性之外,还包括后来添加的其他属性。person1和person2都包含一个内部属性,该属性仅仅指向了Person.prototype;换句话说,他们与构造函数没有直接的关系。这样的设计也是合乎情理的,因为prototype是类所拥有的,所以prototype也只能由类来访问,同时他也只能访问他对应的类。

原文地址:https://www.cnblogs.com/353373440qq/p/3567307.html