function _new(constructor, ...arg) { let obj = {}; console.log("constructor", constructor); console.log("constructor.prototype", constructor.prototype); obj.__proto__ = constructor.prototype; let res = constructor.apply(obj, arg); console.log("res", res); console.log("obj", obj); return Object.prototype.toString.call(res) === '[object object]' ? res : obj; } const Fun = function (name) { this.name = name; } console.log('result',_new(Fun, 'xyy'));  