JavaScript - 创建可链接函数时最好的方法是什么?

Aus*_*ust 12 javascript return return-value

编辑
这是试图让我的问题更简单.

return this.someFunc(); == return { XXX:this.someFunc() };
Run Code Online (Sandbox Code Playgroud)

为了让这个陈述成真,我需要投入什么?


我正在尝试创建一个可以链接的函数.让我写一些假设的代码.(任何语法错误都会被忽略,我正在快速输入,这只是概念代码.)假设所有函数都是本地定义的或全局的.:)

test = function(){
  this.someFunc = function(){
    this.retest = function(){
      //...code
    }
    //...code
  }
  this.someFunc2 = function(){
    //...code
  }
  return this.someFunc();
}
Run Code Online (Sandbox Code Playgroud)

这个功能允许我链接:test().retest();
但我想做的是返回多个项目.

test = function(){
  this.someFunc = function(){
    this.retest = function(){
      //...code
    }
    //...code
  }
  this.someFunc2 = function(){
    //...code
  }
  return { XXX:this.someFunc(), //What do I put for XXX
           next:this };
}
Run Code Online (Sandbox Code Playgroud)

我想这样做来访问test()提供的另一个函数: test().next.someFunc2();

所以我的问题是这样的:
我仍然希望能够像这样链接:test().retest();
但我必须这样做:test().XXX.retest();

在我的代码中,我可以用什么名字来代替XXX来完成这个?这甚至可能吗?我曾尝试0default了.谢谢您的帮助.

Seb*_*ian 13

您可以创建这样的可链接函数:

var test = function(){

    var self = {};
    console.log('test called')

    function someFunc() {
        console.log('someFunc')
        return self;
    }

    function someOtherFunc() {
        console.log('someOtherFunc')
        return self;
    }   

    self.someFunc = someFunc;
    self.someOtherFunc = someOtherFunc;
    return self;

}

test().someFunc().someOtherFunc();
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助