关于jquery:如何删除/取消设置javascript对象的属性?

How to delete/unset the properties of a javascript object?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicates:
How to unset a Javascript variable?
How to remove a property from a javascript object

我正在寻找一种方法来删除/取消设置JS对象的属性,这样当我循环通过执行for (var i in myObject)的对象时,它们就不会再出现了。这是怎么做到的?


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

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

但如果我这样使用:

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

但是,如果您确实希望删除全局命名空间中的变量,那么可以使用它的全局对象,如window,或者在最外部的作用域中使用this,即

1
2
3
4
var a = 'b';
delete a; //false
delete window.a; //true
delete this.a; //true

http://perfectionkills.com/understanding-delete/

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

示例数组:

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

如果我要这样做:

1
delete myCars[1];

得到的数组将是:

1
["Saab", undefined,"BMW"]

但是像这样使用拼接:

1
myCars.splice(1,1);

会导致:

1
["Saab","BMW"]


空白:

1
myObject["myVar"]=null;

删除它:

1
delete myObject["myVar"]

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