gpt4 book ai didi

javascript - JS中的每个对象都有一个toString()方法吗?

转载 作者:数据小太阳 更新时间:2023-10-29 04:04:29 28 4
gpt4 key购买 nike

enter image description here

enter image description here

如果这是真的,为什么会出现这个错误? req.body 对象不是 nullundefined,如图所示。

我使用 node-inspector 调试我的 express.js 应用程序,这张照片是在 Chrome 开发者工具 中拍摄的。

快速配置:

app.use(express.bodyParser())

感谢您的评论,现在我发现 req.bodyundefined,但是新的问题是如何使 toString 再次工作?我希望 req.body.toString() 返回如下字符串:

enter image description here

如何重新签署一个正确的toString方法?

我试过 delete 未定义的 toString,但没有用。见:

enter image description here

最佳答案

Does every object in JS have a toString() method?

没有。只有那些从 Object.prototype 继承它(就像所有普通对象一样)或自己定义它(或从它们的自定义原型(prototype)继承它)的对象才这样做。

您可以通过Object.create(null) 创建这些不寻常的对象。您还可以为普通对​​象提供一个自己的 toString 属性,该属性隐藏继承的对象并且不是函数(例如 {toString:0}),但我想那会我们抛出了一个明显的错误。

在您的情况下,querystring parser 似乎是bodyParser() 使用确实(确实)创建了没有原型(prototype)的对象,以避免在使用此类参数时破坏 .constructor.prototype。参见 qs pullrequest #58express issue 1636: Bodyparser not setting object.prototype? (建议更新)。

How to reassign a proper toString method?

你可以分配任何功能,比如

req.body.toString = function() { return "Hi, I'm a request body"; };

但您可能想要标准的:

req.body.toString = Object.prototype.toString;

其他选项是通过非标准的 __proto__ 属性(req.body.__proto__ = Object.prototype)重新定义原型(prototype),或者简单地在对象而不是使它成为方法,例如 Object.prototype.toString.call(req.body)

关于javascript - JS中的每个对象都有一个toString()方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18640776/

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