JS 中用 hasOwnProperty 方法检测属性会遇到个不可预料的问题
DebugMi 发布于 2017-07-12 18:56编辑于 2024-08-29 03:45阅读:
一直以来我喜欢用 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
比较稳妥。
0