gpt4 book ai didi

javascript - 如何在 javascript 中检查不继承自 Object.prototype 的对象的对象键

转载 作者:行者123 更新时间:2023-12-02 14:11:57 24 4
gpt4 key购买 nike

在 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com