转载:https://www.jianshu.com/p/febd82436720
function newObj(obj, ...args) {
// 创建一个空对象
let newObj = {};
// 将newObj的原型指向构造函数的prototype
newObj.__proto__ = obj.prototype
// 将newObj的this指向obj
let ret = obj.apply(newObj, args)
// 判断返回值 如果返回值为对象就返回这个对象 返回值不为对象 就返回创建的对象
return typeof ret === 'object' ? ret : newObj
}