new操作符都做了什麼

2021-09-12 22:55:26 字數 556 閱讀 7514

var fun = function () ;

}var fun1 = function()

var p1 = new fun();

var p2 = new fun1();

p1.name; // jack

p2.name; // peter

為什麼p1和p2的name值不一樣,要從new操作符說起,在new的時候,程式做了以下四個建立步驟:

建立乙個空物件

將所建立的物件的__ proto __指向建構函式的prototype

實行建構函式中的**,建構函式中的this指向該物件

返回該物件(除非建構函式中返回了乙個物件或者函式)

注意第4步,上述 fun和fun1建構函式中由於fun返回的是乙個物件,所有p1等於fun中返回的物件,

fun1中返回的不是物件,所有p2.__ proto __等於fun1.prototype;

用**模擬new建立過程就是

function objectfactory()

new 操作符 都做了什麼

new操作符都做了什麼?建立了乙個新物件let target 繼承了函式的原型target.proto func.prototype 屬性和方法都加入到this 引用的物件中,並執行該函式 func.call target 如果該函式返回的是objectfunction就返回 function ne...

js中new操作符做了什麼?

看了好幾篇部落格終於弄懂了new操作符,寫得很相似,但有經過自己的思考的 function foo name,age console.log newfoo lxh 21 foo這是通過new直接建立出乙個物件,那麼new操作符是怎麼實現的呢?function objectfactory 3.拿到引數...

js的new操作符具體做了什麼

建立乙個空物件 把空物件的原型設為建構函式的原型 把建構函式的指標指向這個空物件並傳參 最後返回例項 function likenew obj,args newobj.proto obj.prototype 可將前兩步合併 let newobj object.create obj.prototype...