技术实践

用这些技巧提高你的 JS 技能

JS 删除对象中的某个属性,`delete`是删除对象属性唯一真正的方法,但它的工作比其“替代”设置慢100倍

羊先生的头像
羊先生2021.09.25 · 1 分钟阅读 · 82 阅读
用这些技巧提高你的 JS 技能封面
文章正文还需 1 分钟

JS 删除对象中的某个属性,
delete是删除对象属性唯一真正的方法,但它的工作比其“替代”设置慢100倍 object[key] = undefined

1、如何高效的移除属性

js 复制代码
const removeProperty = (target, propertyToRemove) => {
    // 将该属性拆分为从另一个对象的目标中删除
    const { [propertyToRemove]: _, ...newTarget } = target
    return newTarget
}

const toto = { a: 55, b: 66 }
const totoWithoutB = removeProperty(toto, 'b') // { a: 55 }

2、当只有对象存在时才向其添加属性

❌ 不建议的做法

js 复制代码
const toto = { name: 'toto' }
const other = { other: 'other' }
// The condition is not important
const condition = true

if (condition) {
   other.name = toto.name 
}

✅ 推荐做法

js 复制代码
const condition = true

const other = {
   other: 'other',
   ...condition && { name: 'toto' }
}

为变量设置默认值

js 复制代码
let toto

console.log(toto) //undefined

toto = toto ?? 'default value'

console.log(toto) //default value

toto = toto ?? 'new value'

console.log(toto) //default value

使用控制台计时器

js 复制代码
console.time()
for (i = 0; i < 100000; i++) {
  // some code
}
console.timeEnd() // x ms