functionnewObject() { var con = [].shift.call(arguments) var obj = Object.create(con.prototype) var res = con.apply(obj, arguments) return res ? res : obj }
functionMy(a) { return { a, } } // 使用 const a = newObject(My, 1) // { a: 1 }
声明一个普通函数, 该函数返回一个基本类型, 或者返回函数, 这个时候会发生什么?
函数返回基本类型,使用 new, 会生成空对象
函数返回函数类型,使用 new, 返回该函数(函数本身也是对象)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
// 函数返回基本类型 ----------------- functionfunc(a, b) { return a + b }
var c = newfunc(1, 2) console.dir(c) // func{} func类型的空对象 Object.keys(c) // []