Object.myCreate=function(o){
if(o==null){
return {}
}
if(typeof o!=='object' && typeof o!=='function'){
throw new TypeError("Object prototype may only be an Object "+o)
}
//创建一个函数
function f(){}
//将此函数的原型对象设置为传入的对象
f.prototype=o;
//返回此函数的实例
return new f();
}
测试一下 :
var obj={
name:'hello'
}
var o = Object.myCreate(obj)
console.log(o)
看一下结果:
可以看到返回对象的--proto__就是测试的obj
传入函数试试:
function h(){
}
var o1 = Object.myCreate(h)
console.log(o1)
看输出的o1
也完成既要的效果!!