我正在尝试使用lodash'_.clone
克隆一个对象。
但是,我想保持克隆对象的原型继承完整。 IE 10不允许我访问__proto__
甚至是Object.setPrototypeOf(toObj, Object.getPrototypeOf(fromObj));
,我不想通过父对象上的call
或apply
访问,因为有很多setter和父对象的getter方法需要从克隆对象中调用。
有什么建议吗?
答案 0 :(得分:0)
经过一番尝试,我发现了我的一个用途:
/**
* Shallow clone an object and retains the prototype chain
* @param {Object} fromObj Object to be cloned
* @returns {Object} Cloned Object
*/
function cloneObj(fromObj) {
var toObj, i;
if (fromObj && typeof fromObj === 'object') {
toObj = new fromObj.constructor();
for (i in fromObj) {
if (fromObj.hasOwnProperty(i)) {
toObj[i] = fromObj[i];
}
}
} else {
throw new Error(fromObj + ' cannot be cloned');
}
return toObj;
}