作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 Node 6.x 中 querystring
模块将值解析为不从 Object.prototype
扩展的对象(虽然我不知道为什么要做出这样的改变)。
鉴于此,检查不包含值的查询参数的预期方法是什么,即有人使用localhost:8080/some/path?keyonly
调用express或koa。我想检查 this.query.keyonly
是否存在?我期望我能做到this.query.hasOwnProperty('keyonly')
这显然行不通。还有什么选择?
最佳答案
变更背景请参见原PR here .
一般来说,您不应依赖 foo.hasOwnProperty()
,因为 hasOwnProperty
可以轻松地重新分配给其他内容(因此 querystring
更改 - 想象有人使用类似 http://example.org/foo?hasOwnProperty=hahacrashed 的内容调用您的网络服务。
作为替代方案,您可以只检查属性是否已定义,例如:
var qs = querystring.parse('foo=bar');
if (qs.foo !== undefined) {
// ...
}
您还可以执行以下操作:
var qs = querystring.parse('foo=bar');
if (Object.hasOwnProperty.call(qs, 'foo')) {
// ...
}
但这并不高效,因为 hasOwnProperty()
执行额外的检查(对于现在的 querystring
来说是不必要的)检查并使用 .call()
效率较低
关于javascript - 如何在 javascript 中检查不继承自 Object.prototype 的对象的对象键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39459830/
我是一名优秀的程序员,十分优秀!