2016-03-05 121 views
0

我在看MSDN網絡,任何人都可以解釋我的source-codeObject.create源碼解釋?

Object.create = (function() { 
    var Temp = function() {}; 
    return function (prototype) { 
     if (arguments.length > 1) { 
     throw Error('Second argument not supported'); 
     } 
     if (typeof prototype != 'object') { 
     throw TypeError('Argument must be an object'); 
     } 
     Temp.prototype = prototype; 
     var result = new Temp(); 
     Temp.prototype = null; 
     return result; 
    }; 
    })(); 

function Guru(name){ 
    this.name = name; 
} 


function Shankar(name){ 
    this.name = name; 
} 

Guru.prototype = Object.create(Shankar.prototype); 

這到底是怎麼困惑我是Temp.prototype = null;,爲什麼我們把它設置爲nullreturning a instance of Temp時,我們可以只返回new Temp

Temp.prototype = prototype; 
return new Temp; 

回答

1

也許只是讓它不緩存的最後一個對象,如果原始對象被刪除,請將其保存在內存中。在絕大多數情況下似乎沒有必要,但對審慎而言不是一個壞主意。