實現乙個new操作符

2022-05-01 16:48:09 字數 583 閱讀 5448

new 操作符做了這些事:

1.它建立了乙個全新的物件;

2.它會被執行[[prototype]](也就是__proto__)鏈結;

3.它使this指向新建立的物件;

4.通過new建立的每個物件最終被[[prototype]]鏈結到這個函式的prototype物件上;

5.如果函式沒有返回物件型別object(包含function, array, date, regexg, error),那麼new 表示式中的函式呼叫將返回該物件引用。

function

new(func) ;

if (func.prototype !== null

)

if ((typeof ret === 'object' || typeof ret === 'function') && ret !== null

)

return

res;

}var obj = new(a, 1, 2);

//equals to

var obj = new a(1, 2);

**:實現乙個new操作符

手寫乙個new操作符

實現乙個new操作符 function mynew 測試 function person name var p2 mynew person,小明 console.log p2.name 解釋 重點 slice內部實現是使用的this代表呼叫物件,那麼當.slice.call 傳入 arguments...

實現new操作符

new操作符返回乙個物件,所以需要在函式內部返回乙個物件。這個物件,也就是建構函式中的this,可以訪問到掛載在this上的任意屬性。這個物件可以訪問到建構函式原型上的屬性,所以需要將物件與建構函式鏈結起來。只有返回值是物件,才進行正常處理。const create constructor,args...

js 實現new操作符

new操作符做了什麼 建立乙個空的物件,即 空物件的原型指向建構函式的原型,即設定該物件的建構函式 讓this指向新建立的空物件,即新建立的物件作為this的上下文 判斷返回值的型別,如果是值型別就是返回新的建立物件,如果是引用型別就返回引用型別的物件。如果沒有返回物件型別object包括funct...