javascript中new 實例化一個構造函數到底幹了什麼,爲何要實例化構造函數javascript
- 1.建立一個新的對象
- 2.設置新對象的constructor屬性爲構造函數的名稱
- 3.對象的__proto__屬性指向構造函數的prototype對象
- 4.使用新對象調用函數,函數中的this被指向新實例對象
- 5.返回這個新的對象
複製代碼
在JS中是沒有「類」這個概念的,而是用構造函數來做爲對象模版的,好比人類(是一個對象的模板)分爲男人女人(實物的共同特徵)他她們都有人類的共同特性,都繼承了人類的屬性。意義,1.能夠重複使這個實例化這個構造函數以及使用;2.實現繼承java
function New(){
//建立一個新對象
var obj=new Object();
//取得該方法的第一個參數(並刪除第一個參數),該參數是構造函數
var Constructor = [].shift.call(arguments);
//對象的__proto__屬性指向構造函數的prototype對象
obj.__proto__ = Constructor.prototype;
//使用apply,將構造函數中的this指向新對象,這樣新對象就能夠訪問構造函數中的屬性和方法
Constructor.apply(obj,arguments);
//返回一個對象
return obj;
}
//應用
function test(name){
this.name = name
}
var Test1 = New(test,'js')
//等價於
var Test2 = new test('js')
複製代碼
寄語:堅持是一件幸福的事情app