谁能向我解释这个代码片段,有没有简单的方法来编写它。
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
也有自定义hasOwnProperty
或propertyIsEnumerable
密钥,您应该call
它:
if (Object.prototype.propertyIsEnumerable.call(this_obj, 'string')) {
result.push(this_obj.string);
}