構造函數與new關鍵字


 
// function f1(){
// console.log(this)
// }
// f1() //window

// f2 = new f1; //f1{}
// f1() //window
構造函數
構造函數本事是普通函數,當我們用new關鍵字調用時,能實現某類功能,我們才把它稱呼為構造函數。
所以構造函數的核心就是關鍵字new .

 

 

 

構造函數(new)
 
當任意一個普通函數用於創建一類對象,並且通過new操作符來調用時,它就可以作為構造函數
 
作用:構造新對象,設置對象的屬性和方法.(構造函數里面寫一堆this的作用)
 
ECMAScript提供了多個內置構造函數,如 Object、Array、String、Boolean、Number、Date…等等。
var obj = new Object();
var arr = new Array();
 
 
 

用new調用函數的執行過程
new

* 一元運算符,后面只能跟函數,用來調用函數

*

* 調用函數的方式

* 1、new 函數名 ( 沒有參數的情況下用這種方式 )


* 2、new 函數名()

 

用new調用函數的執行過程

簡單來說,new調用一個函數,執行了該函數,然后返回一個對象(用變量接收這個對象) 。
function f1(){
console.log(this)
}
f1() //window(普通函數)

new f1; //f1{} 和new f1()效果一樣 由new運行,稱為構造函數,改變了 this指向
f1() //window ,沒用new運行,還是普通函數

* 1、自動創建一個空對象

* 2、把函數內部的this指向創建的這個對象(也就是構造函數的作用,構造新對象,設置對象的屬性和方法構造函數里面寫那么多this的作用))

* 3、在函數執行完成以后自動返回創建的那個對象,即使函數里面沒有return
函數里有return

(1、return的是對象

返回這個對象

2、return的是非對象

返回自動創建的那個對象 )
* 注意:

* 1、用new調用的函數,得到的永遠是一個對象,不管函數有沒有返回值

* 2、使用new調用函數,這個函數就是一個用來創建對象的函數(構造函數)

*/

構造函數的調用其中有幾步是:

1.創建一個新對象;
2.將構造函數的作用域賦給新對象(因此this就指向了這個新對象);
3.執行構造函數中的代碼;
4.返回新對象;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM