2011-02-11 5 views
0

익명 함수의 반환 값을 내 JSON 객체의 속성에 어떻게 할당 할 수 있습니까?익명 반환 값을 객체의 속성에 직접 할당

  selectOptionData.push({ 
       value: 123, 
       text: 'Hi there', 
       selected: false, 
       transportObject: function(){ 
        var transObj = null; 
        $.each(transports, function(i, t) 
        { 
         if (t.ID == currentTranspObjID) { 
          transObj = t; 
          return; 
         } 
        }); 

        return transObj; 
       } 
      }); 

답변

1

첫째 : You don't have a JSON object

여기 내 시나리오입니다. 객체 리터럴 표기법으로 정의 된 일반 JavaScript 객체가 있습니다.

익명 함수를 즉시 실행하겠습니까? 당신이 정의로

transportObject: (function(){ 
    var transObj = null; 
    $.each(transports, function(i, t) 
    { 
     if (t.ID == currentTranspObjID) { 
      transObj = t; 
      return; 
     } 
    }); 
    return transObj; 
}()) // <- see here 

이것은 또한 즉시 기능라고하고 즉시 실행 : 그냥 몸 한 후 ()를 추가합니다.

+0

설명을 주신 펠릭스에게 감사드립니다. 사실 나는 질문을 게시하기 전에 그렇게했지만 추가했습니다. 결국 ... like : (function() {....}()); 그리고 분명히 thsi는 내가 편집하고있는 플러그인을 부러 뜨 렸습니다. 그리고 나는 무언가를 잘못했다고 생각했습니다 ... 당신은 플러그인에서 그것을 생각하지 않습니까? 결국? 고마워요! –

+0

@byte_slave : 아니요, 거기에';'를 넣으면 잘못된 구문이 나타납니다. 속성 사이에는 ','또는 마지막 속성 다음에 오는 것이 없습니다. 그렇지 않으면'var obj = {foo : 1, bar : 0;};'과 같이 보일 것입니다. 객체 정의는 * one * 문이지만 ';'는 명령문을 분리합니다. –

+0

예 ... 맞아 ... 나는 기능에 대해서 생각하고 있었고 더 이상 재산에 관심이 없었습니다. (그 이유는 ... 계몽에 감사드립니다.) 덕분에 많은 도움을 주셨습니다 –

1

내가 제대로 질문을 이해한다면, 당신은 다음과 같은 작업을 수행 할 수

var myObject = { 
    value: 123, 
    text: "hi there", 
    magics: (function() { 
     // Do things. 
     return "stuff"; 
    }()) 
}; 

괄호의 기능을 포장하면 인라인 함수를 호출 할 수 있습니다.

관련 문제