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