delete操作符
// 變量的直接引用,函數的參數或者函數名使用delete操作,會拋出語法錯誤
const person = {
one: '1111',
two: '2222',
three: '3333'
}
// 不可配置屬性
Object.defineProperty(person, 'four', {value: '4444', configurable: false})
console.log(delete person.three)
console.log(delete person.four) //在嚴格模式下會報錯
// 刪除一個不存在的屬性,結果爲true
console.log(delete person.five)
var nameOther = '123'
// 一個不可設置的屬性刪除爲false(即不能刪除
console.log(delete nameOther) //在嚴格模式下會報錯`
reflect.deleteProperty() 函數
const res = {
one: '1111',
two: '2222',
three: '3333'
}
Reflect.deleteProperty(res, 'one')
console.log(Reflect.deleteProperty(res, 'one'))
// 會在target不是對象的時候拋出異常
const noObject = 1
try {
Reflect.deleteProperty(noObject, 'one')
} catch (error) {
console.log(error)
}
// Object.defineProperty()基本等同,只是返回是否成功的布爾值
Reflect.defineProperty(res,'four',{
value:'4444',
configurable:'false',
})
console.log(res.four)
// 在配置爲false的情況下仍然可以刪除成功
console.log(Reflect.deleteProperty(res, 'four'))