Javascript原生如何实现一个new
实现方法
function _new(fn, ...arg) {
const obj = Object.create(fn.prototype);
const ret = fn.apply(obj, arg);
return ret instanceof Object ? ret : obj;
}
关于为什么最后要判断 return ret instanceof Object ? ret : obj
instanceof Object 来判断是否是对象,包含Array,Object,Function、RegExp、Date
构造函数是可以自己指定返回一个对象的
例如下面代码:
function _new(fn, ...arg) {
const obj = Object.create(fn.prototype);
const ret = fn.apply(obj, arg);
//return ret instanceof Object ? ret : obj;
return obj;
}
function A(d) {
this.d = d;
return {
a: 6
};
}
console.log(new A(123)); //{a: 6}
console.log(_new(A, 123)); //A {d: 123} 版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
code前端网



发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。