关于通过exports导出的javascript类方法调用的输入
About input to a javascript class method call that's exported via exports
这里的问题与ExtendScript代码有关,但我认为它应该与任何javascript实现无关。
如果我们在JS库文件(base64.js)中有这样的内容
exports.encode64 = encoder('+/');
//...
function encoder(extra) {
//...
}
然后在另一个使用导出方法的文件中,首先在某处导入/包含/要求base64.js
var data = "some data";
base64.encode64(data);
这是否意味着如果我们不导出方法并直接调用encoder(),假设base64.js被"包含"到执行代码的全局命名空间中,那么我们将像这样调用它?
encoder('+/' + data);
到目前为止,我看到的导出通常是导出一个不带参数的方法,为库/文件外部暴露的函数/方法分配别名。但是这里的情况对我来说很奇怪,因为我们传入了实参,之后在调用别名时也传入了实参。
如果我的假设是不正确的,那么匹配base64的编码器的正确用法是什么?Encode64别名?
base64.js的完整源代码可以在这里找到:
https://github.com/debrouwere/Extendables/blob/master/dependencies/base64.js在一个相关的注意事项上,有没有一些好的教程来解释所有这些导出和require/import/include的变化?
这与导出的工作方式无关。现在,假设出口按照您认为的方式工作,没有有趣的encoder('+/')
业务。换句话说,exports只是以一种简单的方式导出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()
不是编码函数。然而,它确实返回编码函数(它为你"写"它):
var encode64 = encoder('+/');
// encode64 is a function
所以库只是导出(未命名的)encode64
函数,而不是encoder
。
所以要澄清:
没有会这样调用它吗?编码器('+/' + data);
。它是这样调用的:
var encode64 = encoder('+/');
encode64(data);
- Javascript中的类方法
- 如何理解“当类实例化时,JavaScript静态方法也是不可调用的”
- 从类方法中的 ajax post 函数回调函数更改 javascript 类属性
- 什么是创建 JavaScript 类的适当、现代和跨浏览器安全的方法
- 如何将类方法设置为等于多个函数?-Javascript
- 使用javascript创建自己的隐藏类方法
- javascript ES6类/方法范围
- 我应该如何从 html 调用 javascript 类方法
- 从 html 事件调用 javascript 类方法的正确方法
- 如何调用内部 JavaScript 类方法
- 我们如何在 javascript 类方法中传递参数
- 从同一类中的另一个方法调用 javascript 类方法
- JavaScript类方法未执行
- 将数组从javascript类方法返回到脚本
- 从另一个方法调用javascript类方法
- 重写这个JavaScript类方法的正确方法
- Javascript类方法加载json文件问题
- Javascript类方法返回'未定义'
- Javascript类方法返回数组,但不将其分配给新变量
- 关于通过exports导出的javascript类方法调用的输入