js 实现new
关于new的原理可参考:https://www.cnblogs.com/guanghe/p/11356347.html
下面是实现代码:
function New(fn){ //fn是父类
var res = {};
if(fn.prototype !== null) {
res.__proto__=fn.prototype;
}
// 将传入构造函数的参数,在res上下文中执行一遍
var ret = fn.apply(res,Array.prototype.slice.call(arguments,1));
// 如果构造函数返回一个对象,则直接返回这个对象
if((typeof ret === 'object' || typeof ret === 'function') && ret !== null){
return ret;
}
return res;
}