兰州专业网站建设公司,网站建设优秀网站建,陕西新闻最新消息,网页版qq登陆入口目的#xff1a;编写函数myNew来模拟new关键字
首先#xff0c;我们知道new关键字的工作#xff1a;
1.产生一个新对象
2.将新对象的__proto__属性指向构造函数的prototype属性
3.将新对象赋值给构造函数的this
4.执行构造函数中的代码
函数实现如下#xff1a;
fun…目的编写函数myNew来模拟new关键字
首先我们知道new关键字的工作
1.产生一个新对象
2.将新对象的__proto__属性指向构造函数的prototype属性
3.将新对象赋值给构造函数的this
4.执行构造函数中的代码
函数实现如下
function myNew(constructorFunc, ...args) {if (typeof constructorFunc ! function) {throw new TypeError(Constructor must be a function);}const obj Object.create(constructorFunc.prototype);const res constructorFunc.apply(obj, args);return typeof res object ? res : obj;
}let myNum myNew(Number, 21);console.log(myNum instanceof Number); // 应该输出true
console.log(Object.prototype.toString.call(myNum)); // 应该输出[object Number]但是Object.prototype.toString.call(myNum)真实输出结果是[object Object]并且无法访问原型上的函数。
如何解决呢求指教