克隆对象的原型继承 - IE10

时间:2015-06-18 16:39:07

标签: javascript internet-explorer-10 lodash

我正在尝试使用lodash'_.clone克隆一个对象。

但是,我想保持克隆对象的原型继承完整。 IE 10不允许我访问__proto__甚至是Object.setPrototypeOf(toObj, Object.getPrototypeOf(fromObj));,我不想通过父对象上的callapply访问,因为有很多setter和父对象的getter方法需要从克隆对象中调用。

有什么建议吗?

1 个答案:

答案 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;
}