delete關鍵字的作用:
- 刪除對象的屬性 語法:delete 對象.屬性
- 返回值類型爲布爾值(true / false),刪除成功返回true
delete關鍵字的使用注意:
- 也可以用於刪除數組元素
- 刪除未使用var/let/const關鍵字聲明的全局變量(直接定義在window上面的屬性)
- var、let、const創建的屬性不能被delete操作刪除。
- 刪除對象中不存在的屬性或數組不存在的元素,返回值是true
- delete操作只會在自身的屬性上起作用,刪除對象的原型對象中的屬性(不能刪除),返回值是true
- 刪除對象不可配置屬性,非嚴格模式返回 false,嚴格模式下直接報錯
使用:
a = 1
delete a // true
var b = 1
delete b // false,這裏使用let、const聲明同樣無法刪除
var obj = {
name: 'zh',
age: 23
}
delete obj.age // true
delete obj.weight // true,刪除不存在的屬性返回true
var arr = ['Mary', 'Bob', 'Lisa']
delete arr[1] // true,這裏刪除了數組元素,但是數組長度不變,只是置空了index爲1的元素
delete arr[5] // true
var obj = {}
Object.defineProperty(obj, 'a', {
value: 1,
configurable: false
})
delete obj.a // false
// 嚴格模式下直接報錯,Uncaught TypeError...
function Person() {
this.age = 18;
}
Person.prototype.name = "Bob";
var p1 = new Person();
delete p1.name; // true,但是此屬性是原型對象上的,並未刪掉,只能刪掉對象自身屬性
delete Person.prototype.name // true,刪掉了原型對象上的name屬性