手写 new
function mynew(fn) {
var obj = {}
obj.__proto__ = fn.prototype
var args = Array.from(arguments).slice(1)
console.log(args)
var res = fn.call(obj, ...args)
return res instanceof Object ? res : obj
}
function P(name) {
this.name = name
}
var p = mynew(P, 'hello')
console.log(p.name)
---------------------------------------------------------------
new 出来的对象 和 Object.create(null)出来的对象
null 作为原型链的顶端 自然没继承Object 的属性和方法
var obj = Object.create(null)
console.log(obj.__proto__)
function P() {}
var p = new P()
console.log(p.__proto__)