删除某个对象的字段有两种方法:
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