在节点导出中覆盖函数的toString()
我想重写一个toString()方法,但陷入困境。 已经看过这里 ,但仍然没有运气。
我的代码如下:
var Foo = function(arg) { // some code here... return function (a, b, c) { // return function code... }; }; Foo.prototype.toString = function () { return "string representation of function"; }; exports.bar(arg) { return Foo(arg); };
在另一个模块中:
var mod = require('the-module-from-above'); console.log(mod.bar().toString()); // prints return function source code.
我的问题是,我的toString()函数怎么没有被调用,我怎样才能让它被调用?
谢谢。
如果您将函数作为new
构造函数使用,则只能将函数的原型设置为函数的原型。 由于您在这里看起来没有这样做,所以您需要在返回的实际函数上设置toString
函数。
function fooToString() { return "string representation of function"; } var Foo = function(arg) { // some code here... var ret = function (a, b, c) { // return function code... }; ret.toString = fooToString; return ret; };
如果你希望这样做,你也可以在bar
实际上创build对象时添加toString
函数。
exports.bar(arg) { var foo = Foo(arg); foo.toString = fooToString; return foo; };
- 带有压缩的Node.JS http服务器 – 发送variables作为响应
- NodeJs:具有依赖关系的外部JavaScript
- 你如何在JS / HTML中做一个dynamic的循环,就像你在Jade中一样?
- 关于io.sockets.manager的各种问题和Socket.io的联接function
- gulp / node`del`包裹在大的glob下
- variables在JavaScript中被视为一个string
- 在打字稿中使用Express中的callback函数数组
- AngularJS&Socket.IO – 从Service(发送到此处)到Controller的返回值是undefined || 承诺,asynchronous
- NodeJS获取stream文件下载的字节数