根据现有的对象/数组创建一个空的对象/数组

时间:2019-05-28 09:20:49

标签: javascript

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

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

当前要做的是“长途跋涉”:

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

我希望有一种不错的“内置”方式可以执行以下操作:

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

我看过Object.create,但这总是产生object(即使prototypearray),而typeof返回一个字符串,例如,不能与new

有没有一种简便的方法可以做到这一点,或者我不走运吗?

1 个答案:

答案 0 :(得分:8)

您可以使用constructor的{​​{1}}属性。并且不要使用thing作为变量名。

new

演示:

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