我正在尝试克隆一个对象,使用的是lodash的_.clone。
但是,我希望保持克隆对象的原型继承不变。IE10不允许我访问__proto__,甚至这个Object.setPrototypeOf(toObj, Object.getPrototypeOf(fromObj));,我也不想通过父对象上的call或apply访问,因为父对象上有很多需要从克隆对象调用的setter和getter方法。
有什么建议吗?
发布于 2015-06-21 17:24:29
经过一些尝试,我发现了我的一个用处:
/**
* 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;
}https://stackoverflow.com/questions/30921097
复制相似问题