//1.创建了一个空的对象
//2.将空对象的原型,指向于构造函数的原型
//3.将空对象作为构造函数的上下文(改变this 指向)
//4.对构造函数有返回值的处理判断:返回值为基本类型,则忽略返回值,若返回值为引用类型,则new不管用 (即返回该引用类型)
//构造一个实现new功能的函数
function create(fn, ...args){
//1.创建1个空的对象
var obj = {}; //var obj = Object.create({})
//2.将空对象的原型,指向于构造函数的原型
Object.setPrototypeOf(obj, fn.prototype);
//3.将空对象作为构造函数的上下文(改变this指向)
var result = fn.apply(obj.args);
//4.对构造函数有返回值的处理判断
return result instanceof Object ? result :obj;
}
面试题:new操作符具体做了什么
最新推荐文章于 2024-07-25 09:24:40 发布