原型:
原型本质是一个对象,理解为 JavaScript
自动帮我们添加的,只要是构造函数,系统会默认的为构造函数关联一个对象,这个对象就称为构造函数的原型,写在原型中的成员,可以被构造函数所创建的实例调用。
原型是 JavaScript
自动帮我们在定义构造函数
的时候添加的。
所有构造函数的实例,共享一个原型,原型上一般是挂载函数。
图示理解:
原型 proto
Javascript 规定,每一个(构造)函数都有一个 prototype
属性,指向另一个对象。这个对象的所有属性和方法,都会被构造函数的实例继承。这也就意味着,我们可以把所有对象实例需要共享的属性和方法直接定义在 prototype
对象上,以便让同一类型的对象共享方法或其它成员。
实例的 __proto__
(对象原型)属性 等于 构造函数的 prototype
构造函数、实例、原型三者之间的关系
构造函数(constructor):构造函数就是一个函数,配合new可以新建对象。
实例:通过构造函数实例化出来的对象我们把它叫做构造函数的实例。一个构造函数可以有很多实例。
原型:每一个构造函数都有一个属性prototype
,函数的prototype属性值就是原型。通过构造函数创建出来的实例能够直接使用原型上的属性和方法。
所有的构造函数都是Function的实例
Array 和 Person 和 Date 等都是 Function的实例
Function 和 Object的关系
有人说
JavaScript
是作者花了7天时间写出来的产物 - 不完美
console.log(Object.prototype===Function.prototype.__proto__)
Object的顶端呢?
接近顶峰了
console.log(Object.prototype.__proto__ === null);
希望以上内容可以对你有所帮助!