手寫 new 關鍵字

2021-10-20 18:47:09 字數 893 閱讀 6068

function

mynew

(func,

...args)

;// 新物件原型指向建構函式原型物件

obj.__proto__ = func.prototype;

// 將建構函式的this指向新物件

let result = func.

(obj, args)

;// 根據返回值判斷

return result instanceof

object

? result : obj;

}

使用

function

mynew

(func,

...args)

;// 新物件原型指向建構函式原型物件

obj.__proto__ = func.prototype;

// 將建構函式的this指向新物件

let result = func.

(obj, args)

;// 根據返回值判斷

return result instanceof

object

? result : obj;

}function

person

(name, age)

person.prototype.

sayname

=function()

let p =

mynew

(person,

'tom',18

);console.

log(p)---

>person

p.say()--

> tom

new關鍵字 this關鍵字 base關鍵字

使用new,所做的三件事 1.類是引用物件,引用物件是在堆中開闢空間 在堆中開闢空間 2.在開闢的堆空間中建立物件 3.呼叫物件的構建函式 4.隱藏父類成員 子類的成員可以與隱藏從父類繼承的成員,類似於重寫。public new void sayhello this關鍵字的使用 1.代表當前類的物件...

new 關鍵字相關

初始化動態分配的陣列 動態分配陣列時,如果陣列元素具有類型別,將使用該類的預設建構函式 c primer第 2.3.4 節 實現初始化 如果陣列元素是內建型別,則無初始化 string psa new string 10 array of 10 empty strings int pia new i...

new 關鍵字的理解

當我們例項化乙個物件時,會遇到乙個有意思的問題 function person name this.name name var p new person zhangsan console.log p 建構函式並沒有返回值,為什麼可以將person例項化呢?這是因為new的原因。new關鍵字有兩個作用...