【发布时间】:2013-09-05 15:49:00
【问题描述】:
如果是这样,为什么会发生此错误?如图所示,req.body 对象不是null 或undefined。
我使用node-inspector调试我的express.js应用,这张照片是在Chrome Developer Tools拍摄的。
快速配置:
app.use(express.bodyParser())
感谢您的 cmets,现在我发现 req.body 是 undefined,但新问题是如何使 toString 再次工作?我希望req.body.toString() 返回字符串如下:
如何重新签署正确的toString方法?
我试过delete未定义的toString,不行。见:
【问题讨论】:
-
该方法可能已被删除。看看这个:
var foo = {}; foo.ToString(); foo.toString = undefined; foo.toString();。运行它,看看会发生什么。 -
您能否展开
__proto__属性并上传另一个屏幕截图? -
您对
delete的附录有点牵强附会。在您的示例中,a从来没有自己的toString方法;它总是从它的原型继承而来。因此,delete无效,因为a没有toString方法(即,`a.hasOwnProperty("toString") 为 false)。 -
原来解决方案不在
Object原型中,而可能在于直接在实例本身上的自定义toString。您能否也显示req.body.toString(没有括号可以调用它——我想查看函数代码的控制台渲染)。 -
如果在您的实例上直接定义了
toString值,delete实际上就是这里的答案。您的原型的toString函数被实例本身的另一个值“遮蔽”了。通过执行delete req.body.toString,您可以消除undefined的值并让原型的toString发光。如果您想在没有deleteing 实例toString的情况下调用它,也可以使用Object.prototype.toString.call(req.body)。
标签: javascript node.js express