2017-09-30 3 views
0

C# extension method처럼 직선적으로 함수를 확장하는 방법을 찾고있었습니다.함수 나 함수가 IIFE 표현식을 사용하여 확장되었습니다.

나는이 기사에서 찾은 다음 성명을 시도했다. 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(); 

고마워요.

답변

2

하지만 다음과 같은 코드를 가진 유일한 문제 :

foo 선언에 = 누락 : 내 프로젝트는 다음과 같은 "패턴"을 가지고있다.

IIFE가 화살표 함수를 사용하는 경우 호출하는 괄호는 바깥 괄호 대신 IIFE의 마지막 부분이어야합니다.

+0

네 말이 맞아, 나는 그 인생 가능합니다 알고하지 않았다

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()

, 그냥 "이"가 있으며이 체인 될 수 우수함 반환. 정말 고마워; –

관련 문제