說(shuō)明:
delete用于刪除對(duì)象的某個(gè)屬性。
語(yǔ)法:
exp: delete obj.property / delete obj['property']
在能成功刪除對(duì)象的屬性的時(shí)候,返回true。在不能刪除對(duì)象屬性的時(shí)候返回false。(在對(duì)象的屬性為不可配置的時(shí)候返回false,在嚴(yán)格模式下會(huì)報(bào)錯(cuò)?。?/p>
需要注意一下幾種情況!
- 如果你要?jiǎng)h除的屬性在對(duì)象上不存在,那么delete將不會(huì)起作用,但是任然會(huì)返回true。
- 如果 delete 操作符刪除成功,則被刪除的屬性將從所屬的對(duì)象上徹底消失。然后,如果該對(duì)象的原型鏈上有一個(gè)同名屬性,則該對(duì)象會(huì)從原型鏈上繼承該同名屬性。(也就是說(shuō)delete操作只會(huì)在自身的屬性上起作用)
- 任何使用
var聲明的屬性不能從全局作用域或函數(shù)的作用域中刪除。
- 這樣的話(huà),
delete操作不能刪除任何在全局作用域中的函數(shù)(無(wú)論這個(gè)函數(shù)是來(lái)自于函數(shù)聲明或函數(shù)表達(dá)式) - 除了在全局作用域中的函數(shù)不能被刪除,在對(duì)象(object)中的函數(shù)是能夠用delete操作刪除的。
- 任何用
let或const聲明的屬性不能夠從它被聲明的作用域中刪除。 - 不可設(shè)置的(Non-configurable)屬性不能被移除。這意味著像Math, Array, Object內(nèi)置對(duì)象的屬性以及使用Object.defineProperty()
方法設(shè)置為不可設(shè)置的屬性不能被刪除。