繁体   English   中英

此密钥/列表检查是多余的,不是吗?

[英]This key / list check is redundant, isn't it?

因此,我正在检查列表(哈希)中的键,我必须用两种不同的方式对其进行编码,但忘记删除其中的一部分。 大声笑。 但是对我来说,看它-似乎多余。 是这样吗

 var somelist = {
      a : 'somevalue1',
      b : 'somevalue1',
      c : 'somevalue1',
      d : 'somevalue1',
      e : 'somevalue1',
      f : 'somevalue1'
 }

 for(var key in somelist ){
     if(somelist.hasOwnProperty(key)){  // <-- redundant
         // do something
     }
 }

如果我们遍历键-那么假设是,它是列表的属性,是吗? 我想确保我的大脑不被炸。 :-)

我查看了以下两个帖子:

for..in和hasOwnProperty

如何检查对象在JavaScript中是否具有属性?

但是我的用法似乎更有益。 由于我在这里声明了var键,因此它不是本地的,并且我不必担心原型链冲突吗?

因此,在我看来,它似乎是多余的或不需要的,但这将被视为“不良形式”。 似乎因为我没有在构造函数中使用此哈希,所以我不必担心原型继承等问题。

因此,我的两个问题是:

由于我在这里声明了var键,因此它不是本地的,并且我不必担心原型链冲突吗?

即使不需要,我在这里的用法也被认为是“不良形式”吗? 我想遵守某些编码标准-但也许我的意图是错误的。

这与您不必担心的key有关。 它是对象本身。

Object.prototype[1] = 1;

var somelist = {}

for (var key in somelist) {
    alert(key);
}

// '1' was alerted

您只需使代码更健壮即可执行此检查,建议将其作为最佳实践。 但是,为了使意图变浅,我通常采用倒置模式:

for( var key in obj ) {
    if( !obj.hasOwnProperty( key ) ) {
        continue;
    }

    // do something
}

So So指出了潜在的冲突,但是您的数据也可能会发生变化,然后代码可能会中断。 软件开发的黄金法则:预期失败。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM