new的實現原理【沖擊30K專欄02】

最近剛好換了工作,把最近面試被面的問題,以及現在大多數出現的面試題以一個專題的形式一次性總結,一天一題,現在總共匯總了
150道題,如果這些題都能答出來人人都能沖擊30k,每道題目答案沒有多余扯皮的部分,就是單純的答案。
今天的題目:new的實現原理?
1、創(chuàng)建一個空對象 obj 2、將該對象 obj 的原型鏈 proto 指向構造函數的原型 prototype, 并且在原型鏈 proto 上設置 構造函數 constructor 為要實例化的 Fn 3、傳入參數,并讓 構造函數 Fn 改變指向到 obj,并執(zhí)行 4、最后返回 obj
例子
類對象
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運算符功能函數
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
};
測試
const user = myNew(User,18, '鬼鬼') 說明
每天一到面試題,人人都能沖擊
30k+,點擊↓關注【鬼哥】我當前進度【#002題】,如果你能點贊分享、鬼哥騎自行車也是開心的
參考資料
https://boxuegu.com/ask/detail/12985 https://dazhuanlan.com/2020/02/03/5e37df6bd16b8/ https://cnblogs.com/linjunfu/p/10791467.html
評論
圖片
表情
