javascript - 在 JavaScript 中的函数之后创建一个函数
问题描述
所以,我想为 Node 创建一个库包,它选择一些元素并将其传递给下一个函数。虽然,您可以将其用于其他相关功能。
这是我想要的一个例子。
Selector(element).Action(options, callback);
在实践中,它会是这样的;
cont arr = [1, 2, 3];
Q(arr).insert(4, function (newArr, lengthIndex) {
console.log(newArr); // => [1,2,3,4]
console.log(lengthIndex); // => 4
});
所以,我想知道如何在Action()
函数内部创建Selector
函数。我还希望仍然能够Q(element)
为此返回一个自定义对象。我正在考虑返回一个包含函数和自定义内容的对象,但我不确定。
const Q = function (Element) {
return {
type: typeof Element,
length: Element.length,
// Functions
insert: function (Attribute, Callback) {
Element.push(Attribute);
Callback(Element, Element.length);
return Element;
}
};
}
我想知道是否有更好的方法来做到这一点。该库将增强有关特定内容的功能和信息,还将具有 HTTP 请求。我想要一个 jQuery 风格的包,想知道是否还有其他方法。
~问
解决方案
它调用chaining
. 最好的方法是使用具有所需方法的类,这将返回它的 self ,或者像在被调用的方法中return this
一样创建新的一个/其他类的实例。return new Action(someData)
如果您不想从外部使用类,您可以创建函数包装器来创建实例并返回它:
class Selection{
constructor(args){
this.args = args;
}
doWork(){
console.log(this.args);
return this;
}
}
function select(...args){
return new Selection(args);
}
select("something").doWork()
推荐阅读
- c++ - C++ MFC,使用 ID 变量获取 GUI 控制
- latex - include Rmarkdown pdf output code into a seperate latex theisis tex file
- spring - SpringBoot 测试 - 无法加载驱动程序类:org.h2.Driver
- c++ - Giving the change using a "greedy "method - what(): std::bad_allock
- c++ - Why do we have scope resolution operator right after equal sign?
- flutter - A way to define origin for a Flutter WebView object to make http/https calls
- asp.net-mvc-4 - Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED)) when adding ssl binding
- python - 如果任何目录没有读取权限,pysftp.Connection.walktree() 将失败
- typescript - Union type from key of another type
- tensorflow - (0) Unavailable: {{function_node __inference_train_function_53748}}