JS 中用 hasOwnProperty 方法检测属性会遇到个不可预料的问题
作者:limi582017-07-13 02:56:10阅读: 75

一直以来我喜欢用 obj.hasOwnProperty('attr') 去检测 obj 对象里是否有 attr 属性,然而这并不是一直安全的。

在 koa 里,ctx.request.query 里获取一个地址的 query 对象 params,然后理所当然的调用方法 params.hasOwnProperty('type') 检测属性,发现报错,hasOwnProperty is not a function。

调试之后发现 params 根本没有原型对象,应该是类似 const params = Object.create(null) 产生,自然也就没有原型提供的 hasOwnProperty 方法。因此,检测属性还是 'attr' in obj 比较稳妥。