aneira mais segura de fazer um loop sobre o objeto JavaScri

Quero criar um objeto para armazenar um monte de propriedades como

var o = {x: 20, y: 40, color: 'red'};

s propriedades @More podem ser adicionadas ao objeto durante toda a sua vida útil; portanto, gostaria de uma maneira genérica de percorrer as propriedades para defini-las posteriormente. Eu sei se oObject.prototype foi mexido, simplesmente

for(var prop in o) { ... }

fará com que suas propriedades também sejam repetidas. Que outras coisas podem fazer com que isso atrapalhe e qual é a maneira mais segura de fazer um loop como esse?

questionAnswers(3)

yourAnswerToTheQuestion