new在執行時會做四件事情
new會在記憶體中建立乙個新的空物件
new 會讓this指向這個新的物件
執行建構函式 目的:給這個新物件加屬性和方法
new會返回這個新物件
基於上面的講解,我們執行如下**:
var obj = new base();
new操作符具體幹了什麼呢?其實很簡單,就幹了三件事情。
var obj = {};
obj.__proto__ = base.prototype;
base.call(obj);
第一行,我們建立了乙個空物件obj
第二行,我們將這個空物件的__proto__成員指向了base函式物件prototype成員物件
第三行,我們將base函式物件的this指標替換成obj,然後再呼叫base函式,於是我們就給obj物件賦值了乙個id成員變數,這個成員變數的值是」base」。
js中new操作符做了什麼?
看了好幾篇部落格終於弄懂了new操作符,寫得很相似,但有經過自己的思考的 function foo name,age console.log newfoo lxh 21 foo這是通過new直接建立出乙個物件,那麼new操作符是怎麼實現的呢?function objectfactory 3.拿到引數...
new的過程中做了什麼
new過程自定義實現 一目了然了,1.首先以原型copy乙個新物件,這是拿到類上的公共屬性和方法,object.create 這個方法是建立乙個物件a,傳入乙個物件b作為這個建立的物件a的原型 那麼這個物件a是作為乙個空白的原型物件給子類的,作為子類的原型,這個物件a的 proto 指向父類原型,因...
js的new操作符具體做了什麼
建立乙個空物件 把空物件的原型設為建構函式的原型 把建構函式的指標指向這個空物件並傳參 最後返回例項 function likenew obj,args newobj.proto obj.prototype 可將前兩步合併 let newobj object.create obj.prototype...