【问题标题】:javascript chaining function / function extends using IIFE expressionjavascript链接函数/函数使用IIFE表达式扩展
【发布时间】:2017-09-30 14:49:00
【问题描述】:

我一直在寻找一种以直接方式扩展函数的方法,例如 C# extension method

我已经尝试了在这篇文章Method Chaining in JavaScript 中找到的以下语句,并且效果很好。

var FOO = function(){
     this.whateverFunc = function(){
         console.log("whatever func");
     }
};
FOO.prototype.first = function(){
     console.log("first func");   
     return this;  
};
FOO.prototype.second = function(){
     console.log("second func");   
     return this;  
};

然后我可以链接它:

 var foo = new FOO();
 foo.first().second();
 //Output
 //first func
 //second func

但是:我的项目具有以下“模式”:

var FOO = (function(){
    var foo{
        firstFunc: function(){
            //implement
        },
        secondFunc: function(){
            //implement
        },
    }
    return foo;
}());

即使我不使用 IIFE,它也不起作用。

 var FOO = function() { var foo{}; return foo; };

有没有办法在该模式中使用链接功能?我怎么能做到这一点(如果可能的话!):

FOO.first().second();

谢谢。

【问题讨论】:

    标签: javascript c# jquery function chaining


    【解决方案1】:

    下面代码的唯一问题

    但是:我的项目具有以下“模式”:

    foo 声明中缺少=

    如果 IIFE 使用箭头函数,调用括号应该是 IIFE 的最后一部分,而不是在外括号内。

    var FOO = (function() {
      var foo = {
        firstFunc: function() {
          //implement
          console.log(1);
          return this
        },
        secondFunc: function() {
          //implement
          console.log(2);
          return this
        }
      }
      return foo;
    })();
    
    FOO.firstFunc().secondFunc()

    【讨论】:

    • 你是对的,我不知道 IIFE 有什么可能,只是返回“this”,它可以被链接,太棒了。非常感谢;
    猜你喜欢
    • 2014-05-23
    • 2023-04-04
    • 2017-08-30
    • 1970-01-01
    • 2014-08-10
    • 2012-09-02
    • 2012-12-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多