假设我创建一个对象,如下所示:
let myObject = {
"ircEvent": "PRIVMSG",
"method": "newURI",
"regex": "^http://.*",
};我应该如何删除属性regex以获得新的myObject,如下所示?
let myObject = {
"ircEvent": "PRIVMSG",
"method": "newURI",
};发布于 2016-01-11 00:36:39
ECMAScript 2015 (或ES6)附带了内置的Reflect对象。可以通过调用以目标对象和属性键为参数的Reflect.deleteProperty()函数来删除对象属性:
Reflect.deleteProperty(myJSONObject, 'regex');相当于:
delete myJSONObject['regex'];但如果对象的属性不可配置,则既不能使用deleteProperty函数删除,也不能使用delete操作符删除:
let obj = Object.freeze({ prop: "value" });
let success = Reflect.deleteProperty(obj, "prop");
console.log(success); // false
console.log(obj.prop); // valueObject.freeze()使得对象的所有属性都是不可配置的(除了其他东西)。deleteProperty函数(以及delete operator)在尝试删除其任何属性时返回false。如果属性是可配置的,则即使属性不存在,它也会返回true。
delete和deleteProperty的区别在于使用严格模式时:
"use strict";
let obj = Object.freeze({ prop: "value" });
Reflect.deleteProperty(obj, "prop"); // false
delete obj["prop"];
// TypeError: property "prop" is non-configurable and can't be deletedhttps://stackoverflow.com/questions/208105
复制相似问题