for-in
пересекает собственные перечислимые свойства объекта и перечислимые свойства его прототипа (и его прототип и т. д.). Object.keys
перечисляет только собственные перечислимые свойства объекта.
Итак, Object.keys
создает массив something следующим образом:
var keys = [];
var key;
for (key in object) {
if (object.hasOwnProperty(key)) {
keys.push(key);
}
}
Обратите внимание на проверку hasOwnProperty
.