一、普通對象和函數對象
在javascript中,分為普通對象和函數對象。
總結,凡是通過new Function()建立的對象都是函數對象,其他的都是普通對象。
二、構造函數
上面的例子中person1和person2都是Person的執行個體。這兩個執行個體都有一個constructor(構造函數)屬性,該屬性(是一個指針)指向Person。即:
三、原型對象
在javascript中,每當定義一個對象時,對象中都會包含一些預定義的屬性。其中每個函數對象都有一個prototype屬性,這個屬性指向函數的原型對象。
本文第一個定律:
那什麼是原型對象呢?
我們把上面的例子改一改就容易了解了:
總結:1.Person.prototype.constructor == Person
2.person1.constructor == Person
3.原型對象是構造函數的一個執行個體
四、原型對象作用
那原型對象是用來做什麼的呢?主要作用是用于繼承。如:
從上面的例子可以看出,通過給Person.prototype設定了一個函數對象的屬性,那Person的執行個體出來的普通對象就繼承了這個屬性,小問題,上面兩個this都指向誰?
是以,兩次this在函數執行時都指向person1.