javascript链接函数/函数使用IIFE表达式进行扩展

时间:2017-09-30 14:49:01

标签: javascript c# jquery function chaining

我一直在寻找一种以简单方式扩展功能的方法,例如在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();

感谢。

1 个答案:

答案 0 :(得分:2)

以下代码的唯一问题

  

但是:我的项目有以下"模式":

=声明时遗失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()