2017-01-08 2 views
0

일부 자바 스크립트 함수 선언을 알고 있습니다. exression 함수, 익명 함수와 마찬가지로, 그러나 나는이 두 함수의 어떤 종류의 구문을 이해하지 못합니까? 아무도이 두 기능의 이름이 무엇인지 말해 줄 수 있습니까? "manipulateData : function (input)"및 "getDataById : function (id)"을 의미합니다.함수 정의를 이해할 수 없습니다.

왜 return 문은이 구문을 사용하여 두 가지 함수를 반환 할 수 있습니까? 왜 두 함수 대신 한 함수를 반환하지 않습니까? 당신이 저에게 참고 문서를 줄 수 있다면 좋을 것 같습니까? 감사.

app.service('MyService', function ($http, $q, $angularCacheFactory) { 
    var _dataCache = $angularCacheFactory('dataCache', { 
     maxAge: 3600000 // items expire after an hour 
    }); 
    /** 
    * @class MyService 
    */ 
    return { 
     manipulateData: function (input) { 
      var output; 
      // do something with the data 
      return output; 
     }, 

     getDataById: function (id) { 
      var deferred = $q.defer(); 
      if (_dataCache.get(id)) { 
       deferred.resolve(_dataCache.get(id)); 
      } else { 
       // Get the data from the server and populate cache 
      } 
      return deferred.promise; 
     } 
    }; 
}); 
+0

봐 비슷 {MAXAGE : 3600000}'바로 위에. 같은 개념. –

+0

자바 스크립트 개체 정의와 비슷합니까? – AngularJS

+1

예,이 함수는 두 가지 속성이있는 객체를 반환합니다. 속성의 값은 함수 일뿐입니다. –

답변

0

이러한 함수는 개체의 값일 수있는 익명의 함수입니다. 이것을 고려하십시오 :

var object = { 
    add: function(x, y) { 
    return x + y; 
    } 
}; 

object.add(1, 2); // = 3 

이 동일하다 :

function addFunction(x, y) { 
    return x + y; 
} 

var object = { 
    add: addFunction 
}; 

object.add(1, 2); // = 3 

가 객체의 단지 일반적인 특성을있어 이러한 기능에 대한 특별한 아무것도, 없다.

+1

유용한 추가 사항은 _why_입니다. 객체를 사용하여이 서비스에 대한 공용 인터페이스를 반환합니다. '_dataCache'는 개인 데이터 저장소를 나타냅니다. –

+0

이점이 있습니까? – AngularJS

+0

이 방법을 다른 방법과 비교할 때 이점이 반드시 필요한 것은 아닙니다. dev가 현재 문제를 해결하는 데 사용한 그냥 방법. – castis

0

이 경우 함수가 아니라 개체를 반환합니다.

당신이 콜백 구현 (app.service의 두 번째 인수) 이 콜백은 당신이 당신의 응용 프로그램의 다른 부분에 사용할 수있게 할 방법을 반환해야을 제공해야 AngularJS와의 service을 정의

.

컨트롤러에서 다음

또는 다른 서비스에 당신이 쓸 수 있습니다 :

app.controller("MyCtrl", ["MyService", function(MyService) { 
    MyService.getDataById('an id'); 
}]); 
0

각도 서비스 앱 네임 스페이스에 결합 서비스의 인스턴스를 반환의 return 문에 이러한 기능 공개 방법은 함께 일할 수 있습니다. 기본적으로 두 개의 메서드 manipulateDatagetDataById이 포함 된 개체입니다.

그것은`에서이

function company() { 
    let product; // This is private 

    // Public Methods 
    return { 

    setLatestProduct: function(value) { 
     product = value; 
     console.log(product, ' set'); 
    }, 

    getLatestProduct: function() { 
     return product; 
    } 
    } 

} 

const apple = company(); 
console.log(apple); // { setLatestProduct: function, getLatestProduct: function } 
관련 문제