JavaScript高級 面向對象,13--構造函數的執行過(guò)程
說(shuō)明(2017-4-2 21:50:45)
一、構造函數是干什么用的:
1. 初始化數據的。
2. 在js給對象添加屬性用的,初始化屬性值用。
二、創(chuàng )建對象的過(guò)程:
1. 代碼:var p = new Person();
2. 首先運算符new創(chuàng )建了一個(gè)對象,它類(lèi)似于{},是一個(gè)“沒(méi)有任何成員”的對象。
* 使用new創(chuàng )建對象,對象的類(lèi)型就是創(chuàng )建它的構造函數名(如,Person類(lèi)型)。
* 使用{}無(wú)論如何都是Object類(lèi)型,相當于“new Object()”。
3. 然后調用構造函數為其初始化成員。
*構造函數在調用的一開(kāi)始,有一個(gè)賦值操作,即this=剛剛創(chuàng )建出來(lái)的對象。
*因此在構造函數中,this表示剛剛創(chuàng )建出來(lái)的對象。
4. 在構造函數中,利用對象的動(dòng)態(tài)特性,為對象添加成員。
三、分析代碼,寫(xiě)出每一步的實(shí)現過(guò)程:
在第2行打斷點(diǎn),但執行的時(shí)候是直接從第7行開(kāi)始,因為7行是賦值,而2行只是函數聲明。逐語(yǔ)句運行,在watch里可以看到this在慢慢增加屬性,最后p具有了三個(gè)屬性。
1 <script type="text/javascript"> 2 function Person(name, age, gender){ 3 this.name = name; 4 this.age = age; 5 this.gender = gender; 6 } 7 var p = new Person("張三", 19, "男"); 8 </script>