关于通过 exports 导出的 javascript class 方法调用的输入
About input to a javascript class method call that's exported via exports
这里的问题与 ExtendScript 代码有关,但我认为它应该与任何 javascript 实现无关。
如果我们在 JS 库文件中有这样的东西 (base64.js)
exports.encode64 = encoder('+/');
//...
function encoder(extra) {
//...
}
然后在另一个使用导出方法的文件中,第一个 imports/includes/requires base64.js 某处
var data = "some data";
base64.encode64(data);
这是否意味着如果我们不导出方法并直接调用 encoder(),假设 base64.js 是 "included" 到执行代码的全局命名空间,那么我们将调用它像这样?
encoder('+/' + data);
到目前为止,我看到的导出通常导出一个没有参数的方法,该方法将别名分配给暴露在 library/file 之外的 function/method。但是这里的这个case对我来说很奇怪,因为我们传入了argument,后来调用别名的时候也传入了argument
如果我的假设不正确,那么匹配 base64.encode64 别名的编码器的正确用法是什么?
reference/context base64.js 的完整源代码可以在这里找到:
https://github.com/debrouwere/Extendables/blob/master/dependencies/base64.js
在相关说明中,是否有一些很好的教程可以解释所有这些导出和 require/import/include 的变化?
这与导出的工作方式无关。现在,假设出口以您认为没有有趣的 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()
不是编码函数。但是它确实 return 编码功能(它 "writes" 为你):
var encode64 = encoder('+/');
// encode64 is a function
所以库只是导出(未命名的)encode64
函数,而不是 encoder
。
所以澄清一下:
would call it like this?
encoder('+/' + data);
否。它这样称呼它:
var encode64 = encoder('+/');
encode64(data);
这里的问题与 ExtendScript 代码有关,但我认为它应该与任何 javascript 实现无关。
如果我们在 JS 库文件中有这样的东西 (base64.js)
exports.encode64 = encoder('+/');
//...
function encoder(extra) {
//...
}
然后在另一个使用导出方法的文件中,第一个 imports/includes/requires base64.js 某处
var data = "some data";
base64.encode64(data);
这是否意味着如果我们不导出方法并直接调用 encoder(),假设 base64.js 是 "included" 到执行代码的全局命名空间,那么我们将调用它像这样?
encoder('+/' + data);
到目前为止,我看到的导出通常导出一个没有参数的方法,该方法将别名分配给暴露在 library/file 之外的 function/method。但是这里的这个case对我来说很奇怪,因为我们传入了argument,后来调用别名的时候也传入了argument
如果我的假设不正确,那么匹配 base64.encode64 别名的编码器的正确用法是什么?
reference/context base64.js 的完整源代码可以在这里找到:
https://github.com/debrouwere/Extendables/blob/master/dependencies/base64.js
在相关说明中,是否有一些很好的教程可以解释所有这些导出和 require/import/include 的变化?
这与导出的工作方式无关。现在,假设出口以您认为没有有趣的 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()
不是编码函数。但是它确实 return 编码功能(它 "writes" 为你):
var encode64 = encoder('+/');
// encode64 is a function
所以库只是导出(未命名的)encode64
函数,而不是 encoder
。
所以澄清一下:
would call it like this? encoder('+/' + data);
否。它这样称呼它:
var encode64 = encoder('+/');
encode64(data);