当前位置: 首页 > 面试题库 >

for..in和hasOwnProperty

李辉
2023-03-14
问题内容

我在Twitter的JS文件中找到了以下代码段。我想知道为什么他们需要调用该hasOwnProperty函数才能看到dictkey属性?for循环针对“dict”中的每个“ key”运行,这意味着“ dict”具有“ key”,我是否遗漏了一点?

function forEach(dict, f) {
    for (key in dict) {
        if (dict.hasOwnProperty(key))
            f(key, dict[key]);
    }
}

问题答案:

因为如果不这样做,它将遍历原型链上的每个属性,包括您不知道的属性(这些属性可能是由于弄乱了本机对象原型而添加的)。

这样,您可以确保仅该对象实例本身上的键。



 类似资料:
  • 本文向大家介绍for in 和 for of 的区别?相关面试题,主要包含被问及for in 和 for of 的区别?时的应答技巧和注意事项,需要的朋友参考一下 for of 用于遍历于数组和可迭代对象得到的是entity({key: value}), for in 用于遍历对象的得到的是对象的属性名 for in 不可用来遍历一个数组, for in 将会把数组中的 length 等不需要的属

  • for...in循环用于循环对象的属性。 由于我们尚未讨论对象,您可能对此循环感到不舒服。 但是一旦你理解了对象在JavaScript中的行为方式,你会发现这个循环非常有用。 语法 (Syntax) for (variablename in object){ statement or block to execute } 在每次迭代中, object一个属性被赋值给variablename

  • for-in循环遍历项目集合,例如数字范围,数组中的项目或字符串中的字符 - 语法 (Syntax) Swift 4编程语言中for-in循环的语法是 - for index in var { statement(s) } Example var someInts:[Int] = [10, 20, 30] for index in someInts { print( "Value o

  • 问题内容: 您是否认为for … in和for循环有很大的不同?您更喜欢使用哪种“用于”,为什么? 假设我们有一个关联数组的数组: 这样我们就可以迭代: 和: 我没什么大不同。有性能问题吗? 问题答案: 该选择应基于对哪种习语最了解。 使用以下方法迭代数组: 使用以下方法来迭代用作关联数组的对象: 除非您有惊天动地的理由,否则请遵循既定的使用模式。

  • JS for in 循环是一种特殊类型的循环,也是普通 for 循环的变体,主要用来遍历对象,使用它可以将对象中的属性依次循环出来,其语法格式如下: for (variable in object) {     // 要执行的代码 } 其中,variable 为一个变量,每次循环时这个变量都会被赋予不同的值,我们可以在 中使用这个变量来进行一系列操作;object 为要遍历的对象,在每次循环中,会

  • 此循环结构用于迭代可枚举集合中模式的匹配,例如范围表达式,序列,列表,数组或支持枚举的其他构造。 语法 (Syntax) for pattern in enumerable-expression do body-expression 例子 (Example) 以下计划说明了这一概念 - // Looping over a list. let list1 = [ 10; 25; 34; 45