方式一:
function inherit(p) {
if (p == null) {
throw TypeError();
}
var t = typeof p;
if(t!=="object" && t!=="function"){
throw TypeError();
}
var o = {};
for(var prop in p){
o[prop]=p[prop];
}
return o;
}
方式二:
function inherit(p) {
if( t===null){
throw TypeError();
}
var t = typeof p;
if(t!=="object" && t!== "function"){
throw TypeError();
}
var f = function(){};
f.prototype=p;
return new f();
}
简而言之,区别就是:
1是
复制属性
2是
共享属性
而且1中的复制只是复制了可枚举属性。读一下ES规范就会发现:原型这种东西就是为了共享属性而设计的。
再多说一句:
代码@小_秦写的很多了,他的代码正是体现了两者的区别,赞一个。