如何删除/取消设置 JavaScript 对象的属性?
2022-08-30 04:38:38
我正在寻找一种方法来删除/取消设置JavaScript对象的属性,因此如果我循环访问对象,它们将不再出现。如何做到这一点?for (var i in myObject)
我正在寻找一种方法来删除/取消设置JavaScript对象的属性,因此如果我循环访问对象,它们将不再出现。如何做到这一点?for (var i in myObject)
只需使用 ,但请注意,您应该充分阅读使用此功能的效果:delete
delete object.index; //true
object.index; //undefined
但是,如果我像这样使用:
var x = 1; //1
delete x; //false
x; //1
但是,如果您确实希望删除全局命名空间中的变量,则可以使用其全局对象,例如 ,或者在最外层的作用域中使用,即window
this
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"]
要将其清空:
myObject["myVar"]=null;
要将其删除:
delete myObject["myVar"]
正如您在重复的答案中看到的那样