js中new操作符做了:1、創(chuàng)建一個(gè)空對(duì)象,這個(gè)新對(duì)象將成為函數(shù)的實(shí)例;2、將新對(duì)象的原型鏈接到構(gòu)造函數(shù)的原型對(duì)象,這樣新對(duì)象就可以訪(fǎng)問(wèn)構(gòu)造函數(shù)原型對(duì)象中定義的屬性和方法;3、將構(gòu)造函數(shù)的作用域賦給新對(duì)象,這樣新對(duì)象就可以通過(guò)this關(guān)鍵字來(lái)引用構(gòu)造函數(shù)中的屬性和方法;4、執(zhí)行構(gòu)造函數(shù)中的代碼,構(gòu)造函數(shù)中的代碼將用于初始化新對(duì)象的屬性和方法;5、如果構(gòu)造函數(shù)中沒(méi)有返回等等。
本教程操作系統(tǒng):windows10系統(tǒng)、DELL G3電腦。
在JavaScript中,new操作符用于創(chuàng)建一個(gè)新的對(duì)象實(shí)例。當(dāng)使用new操作符調(diào)用一個(gè)函數(shù)時(shí),它將執(zhí)行以下幾個(gè)步驟:
1. 創(chuàng)建一個(gè)空對(duì)象。這個(gè)新對(duì)象將成為函數(shù)的實(shí)例。
2. 將新對(duì)象的原型鏈接到構(gòu)造函數(shù)的原型對(duì)象。這樣新對(duì)象就可以訪(fǎng)問(wèn)構(gòu)造函數(shù)原型對(duì)象中定義的屬性和方法。
3. 將構(gòu)造函數(shù)的作用域賦給新對(duì)象。這樣新對(duì)象就可以通過(guò)this關(guān)鍵字來(lái)引用構(gòu)造函數(shù)中的屬性和方法。
4. 執(zhí)行構(gòu)造函數(shù)中的代碼。構(gòu)造函數(shù)中的代碼將用于初始化新對(duì)象的屬性。
5. 如果構(gòu)造函數(shù)中沒(méi)有返回其他對(duì)象,那么new操作符將返回新創(chuàng)建的對(duì)象實(shí)例。否則,返回構(gòu)造函數(shù)中返回的對(duì)象。
下面是一個(gè)示例,演示了new操作符的使用:
// 定義一個(gè)構(gòu)造函數(shù) function Person(name, age) { this.name = name; this.age = age; } // 使用new操作符創(chuàng)建一個(gè)Person對(duì)象實(shí)例 var person1 = new Person("John", 25); // person1現(xiàn)在是一個(gè)Person對(duì)象實(shí)例 console.log(person1.name); // 輸出: "John" console.log(person1.age); // 輸出: 25
登錄后復(fù)制
在上面的示例中,通過(guò)new操作符調(diào)用Person構(gòu)造函數(shù)創(chuàng)建了一個(gè)新的Person對(duì)象實(shí)例。這個(gè)新對(duì)象實(shí)例的name屬性被設(shè)置為”John”,age屬性被設(shè)置為25。
需要注意的是,new操作符實(shí)際上是一個(gè)語(yǔ)法糖,它隱藏了一些底層細(xì)節(jié)。實(shí)際上,new操作符只是調(diào)用了構(gòu)造函數(shù),并且將構(gòu)造函數(shù)的原型對(duì)象鏈接到新對(duì)象的原型鏈上。因此,我們也可以通過(guò)手動(dòng)執(zhí)行這些步驟來(lái)模擬new操作符的行為。
總結(jié)起來(lái),new操作符在JavaScript中做了以下幾件事情:創(chuàng)建一個(gè)新對(duì)象、鏈接原型鏈、設(shè)置作用域、執(zhí)行構(gòu)造函數(shù)代碼,并返回新對(duì)象實(shí)例。這些步驟使得我們能夠使用構(gòu)造函數(shù)來(lái)創(chuàng)建對(duì)象實(shí)例,并且可以在構(gòu)造函數(shù)中對(duì)新對(duì)象進(jìn)行初始化。