- 创建一个空对象
- 将该空对象的原型设置为构造函数的原型
- 以该对象的上下文执行构造函数
- 返回该对象(如果第三步有返回值则返回,没有则返回新对象)
function new (fn){
if(typeof fn !== 'function'){
throw 'need function'
}
var Obj = Object.create(func.prototype)
// 获取其余参数
var args = [].slice.call(arguments,1)
var objson = fn.apply(Obj,args)
if(typeof objson === 'object' || typeof objson === 'function'){
return objson
}
return Obj
}
Object.create()
####方案一
Object.create = function (obj){
return {'__proto__': obj}
}
###方案二
Object.create = function (obj){
function Fn(){}
Fn.prototype = obj
return new Fn()
}