Reflect.deleteProperty()
**Reflect.deleteProperty()
** 静态方法类似于 delete
运算符,但它是作为函数实现的。它从对象中删除一个属性。
试一试
语法
js
Reflect.deleteProperty(target, propertyKey)
参数
target
-
要删除属性的目标对象。
propertyKey
-
要删除的属性的名称。
返回值
一个布尔值,指示该属性是否已成功删除。
异常
TypeError
-
如果
target
不是对象,则抛出此异常。
描述
Reflect.deleteProperty()
提供了 delete
运算符的反射语义。也就是说,Reflect.deleteProperty(target, propertyKey)
在语义上等效于
js
delete target.propertyKey;
在非常低级的层面上,删除属性会返回一个布尔值(就像 代理处理程序 一样)。Reflect.deleteProperty()
直接返回状态,而delete
在 严格模式 中如果状态为false
,则会抛出 TypeError
。在非严格模式下,delete
和 Reflect.deleteProperty()
的行为相同。
Reflect.deleteProperty()
调用 target
的 [[Delete]]
对象内部方法。
示例
使用 Reflect.deleteProperty()
js
const obj = { x: 1, y: 2 };
Reflect.deleteProperty(obj, "x"); // true
console.log(obj); // { y: 2 }
const arr = [1, 2, 3, 4, 5];
Reflect.deleteProperty(arr, "3"); // true
console.log(arr); // [1, 2, 3, undefined, 5]
// Returns true if no such property exists
Reflect.deleteProperty({}, "foo"); // true
// Returns false if a property is unconfigurable
Reflect.deleteProperty(Object.freeze({ foo: 1 }), "foo"); // false
规范
规范 |
---|
ECMAScript 语言规范 # sec-reflect.deleteproperty |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。