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