gpt4 book ai didi

javascript - 关于通过导出导出的 javascript 类方法调用的输入

转载 作者:太空宇宙 更新时间:2023-11-04 00:54:44 31 4
gpt4 key购买 nike

这里的问题与 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

<小时/>

澄清一下:

would call it like this? encoder('+/' + data);

。它是这样称呼的:

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

关于javascript - 关于通过导出导出的 javascript 类方法调用的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30519803/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com