我刚刚阅读article,建议使用in
运算符进行浏览器功能和对象属性检测。给出的例子是使用:
if("geolocation" in navigator) {
// Do some stuff
}
而不是:
if(navigator.geolocation) {
// Do some stuff
}
然而,它没有提到hasOwnProperty,尽管以下代码似乎工作得很好:
if(navigator.hasOwnProperty('geolocation')) {
// Do some stuff
}
我是否应该使用in
代替hasOwnProperty
,反之亦然?或者它只是一种风格选择?
答案 0 :(得分:4)
与hasOwnProperty上的MDN有所不同:
来自Object的每个对象都继承
hasOwnProperty
方法。 此方法可用于确定对象是否具有 指定属性为该对象的直接属性;与in
不同 运算符,此方法不会检查对象的原型 链
我的建议是,如果您创建了对象,那么您可以在大多数时间使用in
或简单查找,但在有原型链的情况下考虑您的选项。如果它是本机对象或您无法控制的其他对象,则使用hasOwnProperty
。