js中new操作符做了什麼?

2021-09-29 19:57:28 字數 791 閱讀 6912

看了好幾篇部落格終於弄懂了new操作符,寫得很相似,但有經過自己的思考的

function

foo(name,age)

console.

log(

newfoo

("lxh",21

));// foo

這是通過new直接建立出乙個物件,那麼new操作符是怎麼實現的呢?

function

objectfactory()

;// 3.拿到引數的第一項,就是foo建構函式

const constructor =

.shift.

call

(arguments)

;// 通過陣列解構方法拿到引數第一項

// const [constructor, ...args] = [...arguments];

//5.將物件的__proto__指向建構函式的原型物件

obj.__proto__ = constructor.prototype;

//4.呼叫建構函式,將建構函式的屬性和方法新增到這個物件上,把建構函式的作用域指到這個物件上

const res = constructor.

(obj, arguments)

;// 2.返回這個物件

// return obj;

return

typeof res ===

"object"

? res : obj;

}

new操作符的作用:

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

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

new操作符都做了什麼

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的時候,程式做了以下四個建立步驟 建立乙個空物件 ...

new 操作符 都做了什麼

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