JS中的每个对象是否都有toString()方法?
否。只有那些继承自
Object.prototype(如所有普通对象一样)或自行定义(或从其自定义原型继承)的人才可以。
您可以通过创建此类异常对象
Object.create(null)。您还可以给一个普通对象一个自己的
toString属性,该属性遮盖继承的属性,而不是一个函数(例如
{toString:0}),但是我想那会抛出一个明显的错误。
在您的情况下,dos
bodyParser()(did)使用的查询字符串解析器似乎确实创建了没有原型的对象,以避免
.constructor.prototype在使用此类参数时造成混乱。请参阅qs
pullrequest#58并表达问题1636:
Bodyparser没有设置object.prototype?
(建议更新)。
如何重新分配适当的toString方法?
您可以分配任何功能,例如
req.body.toString = function() { return "Hi, I'm a request body"; };
但您可能想要标准的:
req.body.toString = Object.prototype.toString;
其他选择是通过非标准
__proto__属性(
req.body.__proto__ =Object.prototype)重新定义原型,或者只是在对象上应用独立函数,而不是将其作为方法,例如
Object.prototype.toString.call(req.body)。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)