模拟new关键字时产生的问题,求解答!
目的:编写函数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],并且无法访问原型上的函数。
如何解决呢???求指教