关于input到通过导出导出的javascript类方法调用

这里的问题属于ExtendScript代码,但我相信它应该是不可知的任何JavaScript的实现。

如果我们在JS库文件(base64.js)中有这样的东西,

exports.encode64 = encoder('+/'); //... function encoder(extra) { //... } 

然后在另一个使用导出方法的文件中,首先在某处导入/ includes /需要base64.js

 var data = "some data"; base64.encode64(data); 

这是否意味着如果我们不导出方法并直接调用encoder(),假设base64.js被“包含”到执行代码的全局命名空间中,那么我们会这样调用它?

 encoder('+/' + data); 

到目前为止,我所见过的导出通常会导出一个没有参数的方法,将别名分配给暴露在库/文件之外的函数/方法。 但是这个例子在我们传入参数后对我来说很奇怪,后来我们在调用别名的时候也传入了参数。

如果我的假设是不正确的,那么base64.encode64别名与编码器的正确用法是什么?

对于参考/上下文,可以在这里findbase64.js的完整源代码:

https://github.com/debrouwere/Extendables/blob/master/dependencies/base64.js

在一个相关的说明,有一些很好的教程,解释了出口的所有这些变化,并要求/import/包括?

这与出口工作无关。 现在,假设出口的工作方式,你认为它没有搞笑encoder('+/')业务工作。 换句话说,出口只需简单地导出JavaScript对象(函数,对象,数组等),而不需要额外的语法。 假设这条线看起来像这样:

 function encode64 (data) { /* ... */ ); exports.encode64 = encode64; 

因为这只是它在做什么。 诚实。 这里没有什么好玩的。


现在我们来讨论encoder()

您会注意到该库的作者没有在源代码中的任何位置编写encode64()函数的定义。 相反,他让另一个函数, encoder() ,为他编写encode64()函数。

encoder()函数可能看起来像这样:

 function encoder (extra) { // do some stuff return function (data) { // actual implementation of the encoding function } } 

所以encoder()不是编码function。 但是,它会返回编码function(它为你“写”):

 var encode64 = encoder('+/'); // encode64 is a function 

所以库只需输出(未命名) encode64function,而不是encoder


所以澄清:

会这样称呼吗? 编码器('+ /'+ data);

没有 。 它像这样调用它:

 var encode64 = encoder('+/'); encode64(data);