Итерировать не нужно, потому что цикл, в лучшем случае, только подтолкнет к result
(что, вероятно, уже определено), если ключ с именем string
находится на объекте, и будет выдвигать значение только включ string
.Итак, вот более простой способ написать это:
if (this_obj.hasOwnProperty('string')) {
result.push(this_obj.string);
}
Если string
не может быть перечисляемым, то это не будет точно так же, как цикл Object.keys
,поскольку Object.keys
выполняет итерации только перечислимых свойств, поэтому при необходимости вы можете использовать перечислимую проверку:
if (this_obj.propertyIsEnumerable('string')) {
result.push(this_obj.string);
}
(propertyIsEnumerable
возвращает false
, если свойство не находится непосредственно на объекте)
Полагаю, в очень нечетном случае, что this_obj
также имеет custom hasOwnProperty
или propertyIsEnumerable
ключ, вы должны вместо этого call
:
if (Object.prototype.propertyIsEnumerable.call(this_obj, 'string')) {
result.push(this_obj.string);
}