前端new操作符創(chuàng)建了一個(gè)新的對(duì)象例。具體步驟:1、創(chuàng)建一個(gè)空的簡(jiǎn)單JavaScript對(duì)象;2、將這個(gè)空對(duì)象的“__proto__”屬性指向構(gòu)造函數(shù)的原型對(duì)象;3、將構(gòu)造函數(shù)內(nèi)部的this關(guān)鍵字指向這個(gè)新創(chuàng)建的空對(duì)象;4、執(zhí)行構(gòu)造函數(shù)內(nèi)部的代碼,為這個(gè)新對(duì)象添加屬性和方法;5、如果構(gòu)造函數(shù)返回了一個(gè)對(duì)象,則返回這個(gè)對(duì)象,否則返回這個(gè)新創(chuàng)建的對(duì)象等等。
本教程操作系統(tǒng):Windows10系統(tǒng)、Dell G3電腦。
在前開發(fā)中,new操作符是用來(lái)創(chuàng)建一個(gè)新的對(duì)象例的。當(dāng)使用new操作符時(shí),它會(huì)執(zhí)行以下幾個(gè)步驟:
創(chuàng)建一個(gè)空的簡(jiǎn)單JavaScript對(duì)象(即{})。
將這個(gè)空對(duì)象的__proto__屬性指向構(gòu)造函數(shù)的原型對(duì)象。
將構(gòu)造函數(shù)內(nèi)部的this關(guān)鍵字指向這個(gè)新創(chuàng)建的空對(duì)象。
執(zhí)行構(gòu)造函數(shù)內(nèi)部的代碼,為這個(gè)新對(duì)象添加屬性和方法。
如果構(gòu)造函數(shù)返回了一個(gè)對(duì)象,則返回這個(gè)對(duì)象;否則返回這個(gè)新創(chuàng)建的對(duì)象。
下面我們來(lái)詳細(xì)分析一下這個(gè)過程:
創(chuàng)建一個(gè)空的簡(jiǎn)單JavaScript對(duì)象:這個(gè)空對(duì)象將會(huì)成為將要?jiǎng)?chuàng)建的實(shí)例對(duì)象。這個(gè)對(duì)象會(huì)繼承構(gòu)造函數(shù)的原型對(duì)象上的屬性和方法。
將這個(gè)空對(duì)象的__proto__屬性指向構(gòu)造函數(shù)的原型對(duì)象:原型對(duì)象是一個(gè)包含可繼承屬性和方法的對(duì)象。在JavaScript中,每個(gè)函數(shù)都有一個(gè)prototype屬性,指向它的原型對(duì)象。當(dāng)我們使用new操作符創(chuàng)建一個(gè)對(duì)象時(shí),這個(gè)新對(duì)象的__proto__屬性就會(huì)指向構(gòu)造函數(shù)的原型對(duì)象。
將構(gòu)造函數(shù)內(nèi)部的this關(guān)鍵字指向這個(gè)新創(chuàng)建的空對(duì)象:在構(gòu)造函數(shù)內(nèi)部,通過使用this關(guān)鍵字,我們可以向這個(gè)新對(duì)象添加屬性和方法。this關(guān)鍵字在這里指代了當(dāng)前正在創(chuàng)建的實(shí)例對(duì)象。
執(zhí)行構(gòu)造函數(shù)內(nèi)部的代碼,為這個(gè)新對(duì)象添加屬性和方法:在構(gòu)造函數(shù)內(nèi)部,我們可以向這個(gè)新對(duì)象添加屬性和方法,以便將其初始化為我們想要的狀態(tài)。
如果構(gòu)造函數(shù)返回了一個(gè)對(duì)象,則返回這個(gè)對(duì)象;否則返回這個(gè)新創(chuàng)建的對(duì)象:如果構(gòu)造函數(shù)內(nèi)部有返回語(yǔ)句,并且返回的是一個(gè)對(duì)象,則返回這個(gè)對(duì)象;否則返回剛剛創(chuàng)建的新對(duì)象。這意味著我們可以在構(gòu)造函數(shù)內(nèi)部返回一個(gè)自定義的對(duì)象,而不一定是this所指向的對(duì)象。
使用new操作符創(chuàng)建一個(gè)對(duì)象實(shí)例時(shí),我們會(huì)創(chuàng)建一個(gè)空對(duì)象,并將它的__proto__屬性指向構(gòu)造函數(shù)的原型對(duì)象。然后,構(gòu)造函數(shù)內(nèi)部的代碼會(huì)被執(zhí)行,以便向這個(gè)新對(duì)象添加屬性和方法。最后,如果構(gòu)造函數(shù)內(nèi)部有返回語(yǔ)句,則返回指定的對(duì)象;否則返回這個(gè)新創(chuàng)建的對(duì)象。這樣,我們就可以使用構(gòu)造函數(shù)來(lái)創(chuàng)建多個(gè)實(shí)例對(duì)象,它們都可以共享構(gòu)造函數(shù)的原型對(duì)象上的屬性和方法。