1. 程式人生 > >new建構函式的實現原理

new建構函式的實現原理

當我們說new一個物件的時候,實際做了些什麼?
下面通過程式碼模擬一下


var newFunc = function ( func ){
    //1.新建一個空物件,並將 建構函式的原型物件賦給這個空物件
    var obj = Object.creat(func.prototype);
    //2.執行建構函式,相應引數被傳入,並將this的上下文指向新建立的物件obj
    var ret = func.call(obj);
    //3.如果建構函式返回了物件,就捨棄之前建立的物件obj,newObj = ret
    if(typeof ret === 'object'
) return ret; //4.反之,newObj = obj else return obj; } var foo = function(name){ this.name = name || 'lalaBao'; } var newObj = newFunc(foo); //哦豁,就這樣嬸