2010-12-17 10 views
1

다음 자바 스크립트 코드는 무엇을 의미합니까? 함수 내에서 함수를 정의하여 OOP처럼 보이게하는 것 같아요? 함수가 여러 함수를 반환 할 수있는 이유는 무엇입니까? 결국 브래킷은 무엇입니까?기본 자바 스크립트 문법 질문

var grid_ui = function() { 

    function setup_data_source() {} 

    return { 
     init: function() {}, 

     set_ds: function(rpt_headers, rpt_rows) {} 
    } // return 
}(); 

답변

4

{ } 표기법을 객체 리터럴이라고합니다.

a = new Object(); 
a.init = function() { }; 
a.set_ds = function(...) { }; 
return a; 

return { } 객체를 반환으로는 동일합니다.

function() { ... }();은 자체 호출 함수입니다. 즉, 즉시 호출하는 익명의 함수를 만듭니다.

코드에서 자체 호출 함수는 네임 스페이스 패턴 인 함수의 개체를 반환합니다. grid_ui의 값은 이제 을 포함하며 이는 return에 언급되어 있습니다.

: 몇 가지 링크

이러한 개념

은 SO 대답 하나에 설명하기가 매우 어렵습니다, 그래서 나는 당신에게 제공 할 것입니다
2

는 그것을 호출 및 리턴 값을 취하고 grid_ui에 할당 한 다음 함수를 정의한다.

grid_ui의 값은 이제 initset_ds 키를 포함하는 개체 (사전이라고도 함)입니다.

자바 스크립트에서는 함수 내에 함수를 정의하고 함수에 변수를 할당 할 수 있습니다.

이제 grid_ui.init()grid_ui.set_ds("test", 1)과 같은 전화를 걸 수 있습니다.

0

OOP입니다. 함수는 JavaScript의 객체입니다.

이 코드는 grid_ui 변수가 있다는 것을 의미합니다.이 변수는 init 및 set_ds라는 두 개의 "public"함수가있는 객체로 평가됩니다. init과 set_ds는 "private"함수 인 setup_data_source를 포함하는 컨텍스트를 가지고 있습니다.

대괄호가 없습니다.