javascript - 基于现有对象/数组创建一个空对象/数组

标签 javascript

我正在编写一个将对象或数组作为参数的函数,我想为其创建一个新的空副本,并使用原始对象的转换数据填充它。

我想知道是否有一种方法可以简单地创建这个新对象/数组,而不必测试它是什么类型并采取适当的行动。

目前“长”的路是:

const transf = (thing) => {
  if (typeof(thing) === 'array') {
    const new = []
  }  else {
    const new = {}
  }
}

我希望有一个很好的“内置”方式我可以做类似的事情:

const transf = (thing) => {
  const new = thing.emptyCopy()
}

我看过 Object.create 但它总是生成一个 object (即使 prototype 是一个 array), typeof 返回一个字符串,不能与例如新的

有没有一种简写的方法可以做到这一点,还是我运气不好?

最佳答案

您可以使用 thingconstructor 属性。并且不要使用 new 作为变量名。

const transf = (thing) => {
  const newelm = new thing.constructor()
}

演示:

const transf = (thing) => {
  return new thing.constructor()
}

console.log(transf(['arra']))
console.log(transf({key:'value'}))

关于javascript - 基于现有对象/数组创建一个空对象/数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56338887/

相关文章:

javascript - ios 上的 Html5 音频 : play it in browser

javascript - 在 DOM 中向下和横向遍历

Javascript 闭包 - 如何防止内存泄漏

javascript - 检查一个javascript数组是否包含另一个数组的所有元素或部分元素值

javascript - 无论 Firefox 中的布局区域如何,工具提示都会在同一位置打开

javascript - 调用时未输入 Angular ng-click 函数

javascript - scalajs 作用域中的对象和 js.global 作用域中的“相同”对象有什么区别?

javascript - 如何在每个调用堆栈中只调用一次函数?

javascript - 浏览器 JavaScript 应用 IRC 连接

javascript - 我在下拉菜单中尝试了下一个和前 5 年的 html 代码..我正确地得到了下一个 5 年..我怎样才能获得前 5 年