function _new() {
//1.取出第一个传入参数并删除(实际new过程不需要这一步)
var constructor = Array.prototype.shift.call(arguments);
//2.创建新对象,并将其原型链指向构造函数的原型
var obj = Object.create(constructor.prototype);
//3.传入参数、执行构造函数,并将this指向创建的新对象
var res = constructor.apply(obj, arguments);
//4.如果返回值是对象,则返回res,否则返回obj
return res instanceof Object ? res : obj;
}
//等价于 var p = new Person('zhangsan', 'male');
var p = _new(Person, 'zhangsan', 'male')
JavaScript原理——模拟new
猜你喜欢
转载自blog.csdn.net/baidu_38798835/article/details/108516420
今日推荐
周排行