JS中的new操作符原理解析


var Person = function(name){
   this.name  = name;
}
Person.prototype.sayHello = function() {
    console.log('hello ' + this.name);
}
var p1 = new Person('HANMEI');
p1.sayHello();

1. 創建一個類的實例:創建一個空對象obj,然后把這個空對象的__proto__設置為Person.prototype(即構造函數的prototype);

2. 初始化實例:構造函數Person被傳入參數並調用,關鍵字this被設定指向該實例obj;

3. 返回實例obj。

New實現:

function New(F){
    var obj = {'__proto__': F.prototype};  /*第一步*/
    return function() {
        F.apply(obj, arguments);           /*第二步*/
        return obj;                        /*第三步*/
    }
}

 


免責聲明!

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



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