对js原型对象的理解

一、普通对象和函数对象

在javascript中,分为普通对象和函数对象。

 对js原型对象的理解_第1张图片

总结,凡是通过new Function()创建的对象都是函数对象,其他的都是普通对象。

二、构造函数

 对js原型对象的理解_第2张图片

上面的例子中person1和person2都是Person的实例。这两个实例都有一个constructor(构造函数)属性,该属性(是一个指针)指向Person。即:

对js原型对象的理解_第3张图片

三、原型对象

在javascript中,每当定义一个对象时,对象中都会包含一些预定义的属性。其中每个函数对象都有一个prototype属性,这个属性指向函数的原型对象。

对js原型对象的理解_第4张图片

本文第一个定律:

那什么是原型对象呢?

我们把上面的例子改一改就容易理解了:

对js原型对象的理解_第5张图片

对js原型对象的理解_第6张图片

总结:1.Person.prototype.constructor == Person

          2.person1.constructor == Person

          3.原型对象是构造函数的一个实例

对js原型对象的理解_第7张图片

四、原型对象作用

那原型对象是用来做什么的呢?主要作用是用于继承。如:

对js原型对象的理解_第8张图片

从上面的例子可以看出,通过给Person.prototype设置了一个函数对象的属性,那Person的实例出来的普通对象就继承了这个属性,小问题,上面两个this都指向谁?

对js原型对象的理解_第9张图片

所以,两次this在函数执行时都指向person1.


你可能感兴趣的:(frontend)