How can I delete/unset the properties of a JavaScript object?

Possible Duplicates:
How can I unset a JavaScript variable?
How do I remove a property from a JavaScript object?

I'm looking for a way to remove/unset the properties of a JavaScript object, so they'll no longer come up if I loop through the object doing for (var i in myObject). How can this be done?

125264 次浏览

空白:

myObject["myVar"]=null;

移除它:

delete myObject["myVar"]

你可以在重复的答案中看到

简单地使用 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 不会删除索引,而只是将值设置为未定义的,这意味着在某些控制结构(如 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"]