谁能解释一下这个 Object.keys(this_obj).forEach((key)



谁能向我解释这个代码片段,有没有简单的方法来编写它。

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

没有必要迭代,因为如果对象上有一个名为 string 的键,循环最多只会推送到 result(可能已经定义(,并且只会在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);
}

(如果属性不直接位于对象上,则返回false propertyIsEnumerable(

我想在非常奇怪的情况下,this_obj也有自定义hasOwnPropertypropertyIsEnumerable密钥,您应该call它:

if (Object.prototype.propertyIsEnumerable.call(this_obj, 'string')) {
  result.push(this_obj.string);
}

相关内容

最新更新