【问题标题】:Prototypical inheritance for cloned object - IE10克隆对象的原型继承 - IE10
【发布时间】:2015-06-18 16:39:07
【问题描述】:

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

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

有什么建议吗?

【问题讨论】:

  • 您希望使用Object.create(Object.getPrototypeOf(fromObj)) 开始您的克隆过程。我不认为 lodash 允许扩展它们的功能,所以你必须编写自己的函数。

标签: javascript internet-explorer-10 lodash


【解决方案1】:

经过一番尝试,我发现这是我的用处之一:

/**
 * 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;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-26
    • 2019-11-18
    • 1970-01-01
    • 2022-07-27
    • 1970-01-01
    • 2012-06-19
    • 1970-01-01
    相关资源
    最近更新 更多