如何删除/取消设置 JavaScript 对象的属性?

2022-08-30 04:38:38

可能的重复项:
如何取消设置 JavaScript 变量?
如何从 JavaScript 对象中删除属性?

我正在寻找一种方法来删除/取消设置JavaScript对象的属性,因此如果我循环访问对象,它们将不再出现。如何做到这一点?for (var i in myObject)


答案 1

只需使用 ,但请注意,您应该充分阅读使用此功能的效果:delete

 delete object.index; //true
 object.index; //undefined

但是,如果我像这样使用:

var x = 1; //1
delete x; //false
x; //1

但是,如果您确实希望删除全局命名空间中的变量,则可以使用其全局对象,例如 ,或者在最外层的作用域中使用,即windowthis

var a = 'b';
delete a; //false
delete window.a; //true
delete this.a; //true

了解删除

另一个事实是,对数组使用 delete 不会删除索引,而只会将值设置为 unfined,这意味着在某些控制结构(如 for 循环)中,您仍将迭代该实体。当涉及到数组时,你应该使用数组对象的原型。splice

数组示例:

var myCars = new Array();
myCars[0] = "Saab";
myCars[1] = "Volvo";
myCars[2] = "BMW";

如果我要做:

delete myCars[1];

生成的数组将是:

["Saab", undefined, "BMW"]

但使用拼接像

myCars.splice(1,1);

将导致:

["Saab", "BMW"]

答案 2

要将其清空:

myObject["myVar"]=null;

要将其删除:

delete myObject["myVar"]

正如您在重复的答案中看到的那样