慕森王
2019-02-19 15:55:18
最近用的delete方法比較多,總感覺奇奇怪怪的.除了影響原數(shù)組以為,delete還有什么壞處嗎?let a = true;let obj = {
name: 'xiaobi',
age: 22}if(a === true) { delete obj.age
}console.log(obj);// {name: 'xiaobi'}
2 回答

縹緲止盈
TA貢獻2041條經(jīng)驗 獲得超4個贊
如果你試圖刪除的屬性不存在,那么delete將不會起任何作用,但仍會返回true
如果對象的原型鏈上有一個與待刪除屬性同名的屬性,那么刪除屬性之后,對象會使用原型鏈上的那個屬性(也就是說,delete操作只會在自身的屬性上起作用)
任何使用 var 聲明的屬性不能從全局作用域或函數(shù)的作用域中刪除。
這樣的話,delete操作不能刪除任何在全局作用域中的函數(shù)(無論這個函數(shù)是來自于函數(shù)聲明或函數(shù)表達式)
除了在全局作用域中的函數(shù)不能被刪除,在對象(object)中的函數(shù)是能夠用delete操作刪除的。任何用let或const聲明的屬性不能夠從它被聲明的作用域中刪除。
不可設(shè)置的(Non-configurable)屬性不能被移除。這意味著像Math, Array, Object內(nèi)置對象的屬性以及使用Object.defineProperty()方法設(shè)置為不可設(shè)置的屬性不能被刪除。
添加回答
舉報
0/150
提交
取消