谁能向我解释这个Object.keys(this_obj).forEach((key)

时间:2019-04-16 04:36:42

标签: javascript arrays object

任何人都可以向我解释一下此代码段,有没有简单的编写方法。

Object.keys(this_obj).forEach((key) => {
        if (key === 'string') {
            result.push(this_obj[key]);

            return result;
        }
});

1 个答案:

答案 0 :(得分:2)

不需要进行迭代,因为如果对象上有名为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 hasOwnPropertypropertyIsEnumerable键,您应该{改为{1}}:

call