new的實(shí)現(xiàn)原理【沖擊30K專欄02】

最近剛好換了工作,把最近面試被面的問(wèn)題,以及現(xiàn)在大多數(shù)出現(xiàn)的面試題以一個(gè)專題的形式一次性總結(jié),一天一題,現(xiàn)在總共匯總了
150道題,如果這些題都能答出來(lái)人人都能沖擊30k,每道題目答案沒(méi)有多余扯皮的部分,就是單純的答案。
今天的題目:new的實(shí)現(xiàn)原理?
1、創(chuàng)建一個(gè)空對(duì)象 obj 2、將該對(duì)象 obj 的原型鏈 proto 指向構(gòu)造函數(shù)的原型 prototype, 并且在原型鏈 proto 上設(shè)置 構(gòu)造函數(shù) constructor 為要實(shí)例化的 Fn 3、傳入?yún)?shù),并讓 構(gòu)造函數(shù) Fn 改變指向到 obj,并執(zhí)行 4、最后返回 obj
例子
類對(duì)象
function User(userAge, userName) {
this.userAge = userAge
this.userName = userName
}
User.prototype.showInfo = function() {
console.log('this.userAge :', this.userAge)
console.log('this.userName :', this.userName)
}
模擬new運(yùn)算符功能函數(shù)
function myNew() {
let obj = {}
let arg = Array.prototype.slice.call(arguments, 1)
obj.__proto__ = Fn.prototype
obj.__proto__.constructor = Fn
Fn.apply(obj, arg)
return obj
};
測(cè)試
const user = myNew(User,18, '鬼鬼') 說(shuō)明
每天一到面試題,人人都能沖擊
30k+,點(diǎn)擊↓關(guān)注【鬼哥】我當(dāng)前進(jìn)度【#002題】,如果你能點(diǎn)贊分享、鬼哥騎自行車也是開(kāi)心的
參考資料
https://boxuegu.com/ask/detail/12985 https://dazhuanlan.com/2020/02/03/5e37df6bd16b8/ https://cnblogs.com/linjunfu/p/10791467.html
評(píng)論
圖片
表情
