我的解决方法是:参考jquery中extend方法的实现,通过isPlainObject 函数判断该对象是否具有通过构造函数继承的原型上的属性。
请问,我这个解决方法有什么问题吗?
isPlainObject = function(obj) {
if (obj.constructor && !hasOwn.call(obj, "constructor")
&& !hasOwn.call(obj.constructor.prototype, "isPrototypeOf")) {
return false;
}
var key;
for (key in obj) {
}
return key === undefined || hasOwn.call(obj, key);
},
//测试,对于对象x不进行深拷贝
function O() {
this.yyy = 'yyy';
}
function X() {
this.xxx = 'xxx';
}
X.prototype = new O();
x = new X();
obj1 = { a : 'a', b : 'b', y : '1' };
obj2 = { x : { xxx : 'xxx', yyy : 'yyy' }, y : 'y' };
var combineObj = $.extend(true,obj1,obj2);
console.log(combineObj);
蝴蝶不菲