自定義構造函數
自定義構造函數,可以快速創建多個對象,並且代碼複用性高。
// 一般爲了區分構造函數與普通函數,構造函數名首字母大寫
function Student(name,score,code){
this .name = name;
this .score = score;
this .code = code;
}
var stu1 = new Student( '諸葛亮' ,100,1);
var stu2 = new Student( '蔡文姬' ,98,2);
var stu3 = new Student( '張飛' ,68,3);
|
構造函數語法:
- 構造函數名首字母大寫;
- 構造函數一般與關鍵字:
new
一起使用;
- 構造函數一般不需要設置
return
語句,默認返回的是新創建的對象;
this
指向的是新創建的對象。
構造函數的執行過程:
new
關鍵字,創建一個新的對象,會在內存中開闢一個新的儲存空間;
- 讓構造函數中的
this
指向新創建的對象;
- 執行構造函數,給新創建的對象進行初始化(賦值);
- 構造函數執行(初始化)完成,會將新創建的對象返回。
構造函數的注意點:
- 構造函數本身也是函數;
- 構造函數有返回值,默認返回的是新創建的對象;
- 但是如果手動添加返回值,添加的是值類型數據的時候,構造函數沒有影響。如果添加的是引用類型(數組、對象等)值的時候,會替換掉新創建的對象。
function Dog(){
this .name= "哈士奇" ;
this .age=0.5;
this .watch= function (){
console.log( '汪汪汪,禁止入內' );
}
// return false; 返回值不會改變,還是新創建的對象
// return 123; 返回值不會改變,還是新創建的對象
// return [1,2,3,4,5]; 返回值發生改變,返回的是這個數組
return {aaa: 'bbbb' }; // 返回值發生改變,返回的是這個對象
}
var d1= new Dog(); // 新創建一個對象
console.log(d1);
|
- 構造函數可以當做普通函數執行,裏面的
this
指向的是全局對象window
。
function Dog(){
this .name= "husky" ;
this .age=0.5;
this .watch= function (){
console.log( '汪汪汪,禁止入內' );
}
console.log( this ); // window對象
return 1;
}
console.log(Dog()); // 打印 1
|