如何在不同的上下文中创建函数原型

时间:2017-09-09 12:19:54

标签: javascript node.js ecmascript-6 lodash

我有功能,我将另外两个函数作为参数传递,如:

doSomething的(func1的,FUNC2)

我需要的是在导出函数时在其他上下文中对func1进行原型化。

例如,我有2个不同的文件:

在第一个中我导出一个接收2个参数函数的函数:

module.exports = (func1, func2) => {

}

在第二个我传递参数,就像我之前说的doSomething(func1,func2)

我怎么能在module.exports原型中使用toString的方式,我可以得到类似于function1的输出:

/ * func1()* / func2()

我试过这种方式:

module.exports = (func1, func2) => {

    func1.prototype.toString = function () {
        const comment = `/* ${(_.toString(func1))} */ \n`;
        return comment;
    };
};

结果是func1没有/ * * /任何帮助?

1 个答案:

答案 0 :(得分:0)

您可能希望定义func1.toString而不是func1.prototype.toString。前者将用于func1.toString()。后者将用于func1实例,例如(new func1()).toString()

对象(包括函数)通过​​文件/模块之间的引用传递。你做到这一点并不重要。

> Foo.prototype.toString = function () { return 'proto-tostring' }
> Foo.toString = function () { return 'ctor-tostring' }
> Foo.toString()
'ctor-tostring'
> (new Foo()).toString()
'proto-tostring'