我正在尝试遵循 JSLint 约定,但在使用in
运算符时遇到了一个奇怪的限制,就像在if (a in b) { ... }
上下文中一样。
有没有办法允许这个特定的运营商?我可以忍受 ++ 被 += 1 取代,但没有任何类比in
,并且通过禁止它,它使得对继承属性和自身属性的探测非常麻烦,绝对没有理由。
JSLint 本身建议使用hasOwnProperty
或比较undefined
- 但两者都做错了(可能存在属性,但值为undefined
,可能在相关对象的原型上声明属性)。
解决方法是遍历对象的所有属性并将它们与有问题的属性进行比较,但这会立即将 O(1) 操作转换为 O(n)...