2013-02-23 32 views
1

我明白为什么hasOwnProperty是有必要的,即使一个人完全控制了一个对象,因为Object.prototype可能已被修改。但如果我真的想避免它,请考虑这一点:是否“清除”了一个可避免使用hasOwnProperty的可行方法?

function CleanObject() { 
    var result = {}; 
    for (var key in result) { 
     delete result[key]; 
    } 
    return result; 
} 

// Later... 

var obj = CleanObject(); 
for (var key in obj) { 
    // No hasOwnProperty check necessary 
} 

换句话说,我在使用它之前清除属性的实例。如果这项工作,或者我错过了一些边缘情况?

+0

http://es5.github.com/#x8.12.7规定:'delete's不向上传播原型链(虽然不如清楚)。 – 2013-02-23 13:47:41

回答

1

您还可以使用传入null作为参数的Object.create()语法创建没有属性的“Clean”对象。

实施例:

var clean = Object.create(null); 

for(var key in clean) { 
//do stuff no hasOwnProperties required 
} 
+0

似乎有效解决了我的问题,谢谢 – gdgr 2016-05-10 20:03:52

相关问题