js實例化對象new關鍵字

引言

javascript中new 實例化一個構造函數到底幹了什麼,爲何要實例化構造函數javascript

new 作了什麼事

- 1.建立一個新的對象
- 2.設置新對象的constructor屬性爲構造函數的名稱
- 3.對象的__proto__屬性指向構造函數的prototype對象
- 4.使用新對象調用函數,函數中的this被指向新實例對象
- 5.返回這個新的對象
複製代碼

爲何要new實例化,意義所在

在JS中是沒有「類」這個概念的,而是用構造函數來做爲對象模版的,好比人類(是一個對象的模板)分爲男人女人(實物的共同特徵)他她們都有人類的共同特性,都繼承了人類的屬性。意義,1.能夠重複使這個實例化這個構造函數以及使用;2.實現繼承java

本身封裝New()函數

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

相關文章
相關標籤/搜索