使用new關鍵字調用函數(new ClassA(…))的具體步驟:
1. 創建空對象{}
2. 使用新對象,調用函數,函數中的this被指向新實例對象:
{}.構造函數();
3. 設置新對象的constructor屬性為構造函數的名稱,設置新對象的__proto__屬性指向構造函數的prototype對象
4. 將初始化完畢的新對象地址,保存到等號左邊的變量中
注意:若構造函數中沒有返回值或返回值是基本類型(Number、String、Boolean)的值,則返回新實例對象;若返回值是引用類型的值,則實際返回值為這個引用類型。
var foo = "bar";function test () { this.foo = "foo";}new test();          //test中的this指新對象,并未改變全局的foo屬性console.log(this.foo);  // "bar"console.log(new testThis().foo); // "foo";new和屬性訪問.運算符優先級相通,從左往右執行以上皆為個人理解,如有錯誤之處,歡迎留言指正。
希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持武林網!
新聞熱點
疑難解答