在给定的代码片段中,for-in 循环迭代对象 obj 的属性。每个属性的名称都分配给变量 propt,其值通过 obj[propt] 访问。
但是,需要注意的一个关键细节是 propt 不是对象的内置方法或属性。相反,它只是一个在循环迭代期间采用每个属性名称的变量。
使用 for-in 循环迭代对象属性需要额外的安全性检查:Object.prototype.hasOwnProperty.call(obj, prop).
此检查是必要的,因为JavaScript 中的对象从其基类原型继承属性。因此,一个对象可能拥有它没有显式定义但从基类继承的属性。
为了避免在循环中包含继承的属性,hasOwnProperty 检查确定特定属性是否专门属于该对象。正在迭代的对象而不是继承的原型。
而不是使用Object.prototype.hasOwnProperty.call(obj, prop),也可以直接在对象本身上调用 hasOwnProperty:
if (obj.hasOwnProperty(prop)) { // Do stuff }
但是,如果对象本身具有名为 的属性,则此方法可能会导致错误拥有自己的财产。为了防止这种情况,建议使用 Object.prototype.hasOwnProperty 语法。
以上是如何在 JavaScript 中安全地迭代对象属性?的详细内容。更多信息请关注PHP中文网其他相关文章!