В for .. in
итерации цикла по всем enumerable
свойств, а не по всем свойствам.
Так что я подозреваю, что click
не перечислил или вы что-то пропустили.
Пример о том, как установить свойство, которое не будет доступно через for .. in
цикла:
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
}
Вы можете проверить, является ли перечислимы свойство (т.е. будет доступен в for .. in
цикле), используя Object.propertyIsEnumerable()
метод:
obj.propertyIsEnumerable('stealth') === false
Что это __something__ вы получаете? –
Если вы правильно итерации, возможно, используете 'hasOwnProperty', например http://stackoverflow.com/a/921808/613130, поэтому вы пропускаете свойства, определенные в« родительских »объектах. – xanatos