Object.prototype.toString()方法返回一个代表该对象的字符串
var o = new Object();
o.toString(); //[object object]
toString.call(new Date); // [object Date]
toString.call(new String); // [object String]
toString.call(Math); // [object Math]
// Since JavaScript ES5
toString.call(undefined); // [object Undefined]
toString.call(null); // [object Null]
function extendDeep(child,parent){
var i,
toStr = Object.prototype.toString,
astr = "[object Array]";
child = child || {};
for (i in parent) {
if (parent.hasOwnProperty(i)) {
if (typeof parent[i] === "object") {
child[i] = (toStr.call(parent[i]) === astr) ? [] : {};
extendDeep(parent[i], child[i]);
} else {
child[i] = parent[i];
}
}
}
return child;
}