模擬new操作符

2021-09-11 11:31:40 字數 531 閱讀 8956

function imitatenew(func, ...args) 

let person = imitatenew(function(name, age) , 'alima', 17)

// 複製**

###使用new操作符呼叫建構函式經歷的步驟

建立乙個新物件,繼承建構函式的原型物件

將建構函式的作用域賦給新物件(this指向新物件)

執行建構函式中的**

返回新物件

###返回的物件有三種情況

建構函式沒有指定返回值,則返回建構函式的例項化物件

建構函式中返回值不是引用型別,則也返回建構函式的例項化物件

建構函式中返回值為引用型別,則返回該應用型別

###注:object.create()

let obj = object.create(func.prototype) => 將obj的 [[prototype]] 屬性指向func建構函式的原型物件上

布局new操作符

通常,new負責在堆 heap 中找到乙個足以滿足需要的記憶體塊。new操作符還有另一種變體,被稱為布局new操作符,能夠讓你指定要使用的位置。程式設計師可以利用這種 要使用布局new特性,首先要包含標頭檔案new,他提供了這種new操作的原型。const int buf 512 class jus...

實現new操作符

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

new 操作符和 new 操作的區別

操作符 new operator 和 new操作 operator new 的區別。當你寫這樣的 string ps new string memory management 你使用的 new 是 new 操作符。這個操作符就象 sizeof 一樣是語言內建的,你不能改變它的含義,它的功能總是一樣的...