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属性