The for .. in loop iterates over all enumerable properties, not over all properties.
So I would suspect either the click is not enumerable or you missed something.
Example on how to set a property which will not be available via the for .. in loop:
var obj = {};
Object.defineProperty(obj, "stealth", {
enumerable: false,
value: "you don't iterate over me"
});
// obj.stealth === "you don't iterate over me"
for (var i in obj) {
// Loop will not enter here
}
You can test whether property is enumerable (i.e. will be accessible in a for .. in loop) using Object.propertyIsEnumerable() method:
obj.propertyIsEnumerable('stealth') === false