?,js语言和框架,语法相关-操作符相关"> ?,考点,试题,校招,校招VIP,五星,好工作,笔试,面试,一线,二线,普通公司 ">
校招刷题群
高效刷题 迎战校招
校招精选试题
近年面笔经面经群内分享
Java刷题群 前端刷题群 产品运营群
?" id="exam"/>
首页 > js语言和框架 > 语法相关-操作符相关
题目

如何手写一个 new

解答

先理清楚 new 关键字调用函数都的具体过程,那么写出来就很清楚了。

首先创建一个空的对象,空对象的 ___proto____属性指向构造函数的原型对象
把上面创建的空对象赋值构造函数内部的this,用构造函数内部的方法修改空对象
如果构造函数返回一个非基本类型的值,则返回这个值,否则上面创建的对象

function _new(fn, ...arg) {
var obj = Object.create(fn.prototype);
const result = fn.apply(obj, ...arg);
return Object.prototype.toString.call(result) == '[object Object]' ? result : obj;
}


C 3条回复 评论
٩(๑^o^๑)۶

new内部:

1.创建一个新对象

2.使新对象的隐式原型指向原函数的显式原型

3.改变this指向,指向新的obj,并执行该函数,执行结果保存起来作为result

4.判断执行函数的结果是不是null或undefined,如果是则返回之前的新对象,如果不是则返回result.

发表于 2022-07-09 17:30:50
0 0
雾岛残月

请问测开均价是多少k呢?

发表于 2022-01-04 21:00:00
0 0
冰冻三尺

跟着大佬输出,感觉能量满满

发表于 2021-09-11 18:25:00
0 0