删除某个对象的字段有两种方法:
var obj = {x:1,y:2,z:3};
delete obj.x;//方法一
//方法二 obj.x = undefined;
但是有时候方法二并不是那么恰当,有个对象如下:
var obj = {
x:function(){console.log('wo shi x!');},
y:function(){console.log('wo shi y!');},
z:function(){console.log('wo shi z!');}
}
现在我们要删除掉一个字段,并遍历运行obj的所有字段
obj.x = undefined;
//遍历运行
for(var e in obj){
obj[e]();
}
这时候,程序会报错!原因是undefined 不是一个 函数。
可见obj.x 并不是真的删除了,而是把他的值置为undefined,遍历的时候,仍然会遍历到这个key