1

我理解为什么 hasOwnProperty 是必要的,即使一个对象可以完全控制,因为 Object.prototype 可能已被修改。但是,如果我真的想避免它,请考虑一下:

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
}

换句话说,我在使用它之前清除了属性的实例。这应该有效,还是我错过了一些极端情况?

4

1 回答 1

1

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

例子:

var clean = Object.create(null);

for(var key in clean) {
 //do stuff no hasOwnProperties required
}
于 2016-05-10T19:54:02.787 回答