2

私はJSLintの慣例に従おうとしていますが、コンテキストinのように演算子を使用する際の奇妙な制限に直面していif (a in b) { ... }ます.

この特定のオペレーターを許可する方法はありますか? ++ を += 1 に置き換えても問題ありませんがin、 との類推はありません。これを許可しないことで、継承されたプロパティと独自のプロパティを一緒にプローブすることが、まったく理由もなく非常に面倒になります。

JSLint自体は使用hasOwnPropertyまたは比較を提案しundefinedていますが、どちらも間違っています(プロパティが存在する可能性がありますが、値がundefinedの場合、問題のオブジェクトのプロトタイプでプロパティが宣言されている可能性があります)。

回避策は、オブジェクトのすべてのプロパティをループし、それらを問​​題のプロパティと比較することですが、これにより、O(1) 操作が O(n) に即座に変換されます...

4

1 に答える 1