背景:该模块请求参数例如能够解析key=value&hello=universe
到一个物体{key: 'value', hello: 'universe'}
。然而,模块作者认为返回的对象没有原型。换句话说,这个“混蛋”对象是由Object.create(null)
.
Problem:使用起来会很方便parsed.hasOwnProperty('hello')
但如果没有默认的对象原型,这是不可能的。当然,一个人可以Object.prototype.hasOwnProperty.call(parsed, 'hello')
但我想我们都同意这样的表达方式是丑陋的。
问题:如何很好地将无原型对象转换为具有默认对象原型和方法,例如hasOwnProperty
?另外,这可以在不使用的情况下完成吗令人恐惧的 __proto__
or setPrototypeOf
?
使用起来会很方便parsed.hasOwnProperty('hello')
但如果没有默认的对象原型,这是不可能的
创建这样一个“混蛋对象”的全部意义在于你不能这样做 - 如果有人发送了一个查询字符串怎么办?hasOwnProperty=oops
到你的服务器?
如何很好地将无原型对象转换为具有默认对象原型和方法,例如hasOwnProperty
?
Don't.您应该使用长形式call
,或者只是去in操作员这正是您所需要的:
'hello' in parsed
在 ES6 环境中,您可能还希望将对象转换为正确的Map并使用它has
method.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)