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
}
つまり、使用する前にプロパティのインスタンスをクリアしています。これはうまくいくはずですか、それともいくつかのエッジケースがありませんか?