new操作符的實現原理

2021-08-27 20:31:02 字數 936 閱讀 9778

new操作符的實現原理就4條

新建乙個物件o,將o的__proto__屬性指向建構函式的原型屬性prototype繫結建構函式的執行上下文到o上,並執行建構函式得到返回值s

如果s是乙個物件,new 操作符返回的就是這個s物件

如果s不是乙個物件,new 操作符返回的就是o

下面我們來構造乙個new操作符,並演示一下new操作符

function mynew(func)

function person()

let o1 = new person;

let o2 = mynew(person);

console.log(o1);

console.log(o2);

//person

//person

o1.__proto__ === o2.__proto__;//true

o2.__proto__ === person.prototype;//true

可以看到o1和o2的屬性是一樣的

下面我們再看看建構函式返回乙個物件是什麼情況

function person2()

} let o3 = new person2();

let o4 = mynew(person2);

console.log(o3);

console.log(o4);

////

o3.__proto__ === o4.__proto__;//true

o3.__proto__ === person2.prototype;//false

o3.__proto__ === object.prototype;//true

可以看到o3和o4都是建構函式返回的那個物件,與我們前面的描述是一致的。

new操作符實現原理

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

實現new操作符

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

js 實現new操作符

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