学习资源推荐
- 创建一个空对象,构造函数中的this指向这个空对象
- 创建好的新对象被执行 原型 连接
- 执行构造函数,其中定义的属性和方法被绑定到this指向的对象中
- 如果构造函数中没有返回其它对象,最终返回this,即当前对象,否则,返回构造函数中返回的对象。
代码
function $new (){
let obj={};
let [constructor,...args]=[...arguments]
obj.__proto__=constructor.prototype;
let res=constructor.apply(obj,args);
if(res&&(typeof (res)=='object'||typeof (res)=='function')){
return res;
}
return obj;
}
function Person(){
this.name='tom'
}
$new(Person).name
简写
function _new(fn, ...arg) {
const obj = Object.create(fn.prototype);
const ret = fn.apply(obj, arg);
return ret instanceof Object ? ret : obj;
}