我正在编写一个将对象或数组作为参数的函数,我想为其创建一个新的空副本,并使用原始对象中的转换数据填充它。
我想知道是否有一种方法可以简单地制作这个新对象/数组,而不必测试事物的类型并采取适当的行动。
当前要做的是“长途跋涉”:
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
返回一个字符串,例如,不能与new
等
有没有一种简便的方法可以做到这一点,或者我不走运吗?
答案 0 :(得分:8)
您可以使用constructor
的{{1}}属性。并且不要使用thing
作为变量名。
new
演示:
const transf = (thing) => {
const newelm = new thing.constructor()
}