JavaScript delete 操作符
delete 操作符用于删除对象的某个属性,如果没有指向这个属性的引用,它最终将会被释放。
1 | delete obj['property']; |
对于所有结果都返回 true,除非属性是一个不可配置属性,这种情况,在非严格模式下返回 false,在严格模式下则抛出 TypeError。
1 | const originO = { |
如果要删除的属性不存在,
delete不会有任何作用,但仍返回truedelete只能删除对象本身上的属性,不会删除原型链上的同名属性(如果有的话)1
2
3
4
5
6
7
8
9
10
11function originO() {
this.name = 'originO';
}
originO.prototype.name = 'name in prototype';
let obj = new originO();
delete obj.name;
console.log(obj.name); // name in prototype任何使用
var声明的属性不能从全局作用域或函数的作用域中删除1
2
3
4
5var globalVar = 'XYZ';
const descriptor = Object.getOwnPropertyDescriptor(window, 'globalVar');
console.log(descriptor); // { ..., configurable: false, ... }可以看到
var声明的属性不可配置任何使用
let或const声明的属性不能从它声明的作用域中被删除delete删除数组元素1
2
3
4
5
6
7const arr = [ 1, 2, 3, 4 ];
delete arr[3];
console.log(arr); // [ 1, 2, 3, <1 empty item> ]
console.log(arr.length); // 4
console.log(arr[3]); // undefined
JavaScript delete 操作符
https://cocoalei.github.io/blogs/2019/06/16/JavaScript delete/