new的操作原理

2021-10-22 22:44:29 字數 430 閱讀 9150

簡單記錄下new乙個js物件時,做了什麼事情。

1、建立乙個空物件=》{}

2、將1中建立的空物件的__proto__屬性指向建構函式的prototype屬性。

3、將建構函式的this指定為1中建立的空物件。

4、執行建構函式(為this繫結屬性、複製等操作)。

5.1、如果建構函式有返回值,且返回型別為引用型別,則將建構函式的返回值作為new的結果返回

5.2、如果建構函式有返回值,且返回型別為基礎資料型別,如int,則無論建構函式返回什麼都無效,都將1中建立物件作為建構函式返回值返回。

5.3、如果建構函式沒有返回值,則將1中建立物件作為建構函式返回值返回。

function fn()

new fn() instanceof fn

new操作符的實現原理

new操作符的實現原理就4條 新建乙個物件o,將o的 proto 屬性指向建構函式的原型屬性prototype繫結建構函式的執行上下文到o上,並執行建構函式得到返回值s 如果s是乙個物件,new 操作符返回的就是這個s物件 如果s不是乙個物件,new 操作符返回的就是o 下面我們來構造乙個new操作...

new操作符實現原理

new操作符實現原理 function news func 生成新物件 target.proto func.prototype 例項的 proto 指向原型,建構函式的prototype也指向原型 鏈結到原型 var res func.call target 把函式的this繫結在了新生成的物件中 ...

js中的new操作符原理

舉乙個很常見的例子 function person name person.prototype.say function let p new person 花花 p.say 花花 為什麼會列印出 花花 為什麼建構函式中的 this 就指向了 物件?這就是 new 的原理起的作用 1 建立乙個類的例項...