天天看點

對js原型對象的了解

一、普通對象和函數對象

在javascript中,分為普通對象和函數對象。

對js原型對象的了解

總結,凡是通過new Function()建立的對象都是函數對象,其他的都是普通對象。

二、構造函數

對js原型對象的了解

上面的例子中person1和person2都是Person的執行個體。這兩個執行個體都有一個constructor(構造函數)屬性,該屬性(是一個指針)指向Person。即:

對js原型對象的了解

三、原型對象

在javascript中,每當定義一個對象時,對象中都會包含一些預定義的屬性。其中每個函數對象都有一個prototype屬性,這個屬性指向函數的原型對象。

對js原型對象的了解

本文第一個定律:

對js原型對象的了解

那什麼是原型對象呢?

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

對js原型對象的了解
對js原型對象的了解

總結:1.Person.prototype.constructor == Person

          2.person1.constructor == Person

          3.原型對象是構造函數的一個執行個體

對js原型對象的了解

四、原型對象作用

那原型對象是用來做什麼的呢?主要作用是用于繼承。如:

對js原型對象的了解

從上面的例子可以看出,通過給Person.prototype設定了一個函數對象的屬性,那Person的執行個體出來的普通對象就繼承了這個屬性,小問題,上面兩個this都指向誰?

對js原型對象的了解

是以,兩次this在函數執行時都指向person1.