2010-04-07 2 views
76

왜 우리는 ({ })을 사용합니까?jQuery에서 "({})"을 사용하는 이유는 무엇입니까?

위임자입니까?

이 구문을 사용한다는 것은 무엇을 의미합니까?

무엇을 포장하고 있습니까? 예를 들어

:

$.ajaxSetup ({ // <-- THIS 
    error: fError, 
    compelete: fComp, 
    success: fSucc 
}); // <-- AND THIS 
+1

http://stackoverflow.com/questions/1509535/javascript-false-and-false/1509664#1509664는 겉보기에는 관련없는 질문이지만, 한 가지에 대한 관련 답변을 사용하면 걸릴 수 있습니다. –

답변

156

{}는 자바 스크립트 객체 표기법입니다. 예 :

$('selector').plugin({ option1: 'value' }); 

이 경우에는 설정이 포함 된 개체를 플러그인에 전달합니다. 물론

settings.option1 //the option you passed in. 

그것은 더 많은 용도를 가지고 있지만,이 jQuery를에서 가장 흔한 예는 다음과 같습니다 플러그인은 예를 들어,로 참조있어 어떤 객체로이 처리 할 수 ​​있습니다. .animate(), $.ajax(), .css() 함수 등에 대해서도 마찬가지입니다. 일반적으로 속성을 사용하는 것은이 형식을 사용합니다.


요청으로, 다른 예 :
전달 된 객체 내부의 모든 객체는, 예를 들어,뿐만 아니라뿐만 아니라 속성 함수가 될 수 있습니다

$("<input>", { 
    type: "text", 
    focusin: function() { alert("Hi, you focused me!"); } 
});  

이의 포커스 이벤트를 설정합니다 그 입력은 경고를합니다. 또 이와 같이, 그것을 등록 정보를 추가 객체를 연장된다

var person = { first_name: "John" }; 
$.extend(person, { last_name: "Smith" }); 
//equivalent to: 
person.last_name = "Smith"; 
//or: 
person["last_name"] = "Smith"; 

지금 personlast_name는 특성을 갖는다. 이것은 플러그인에서도 자주 사용되며 기본 설정을 사용하고 전달한 모든 설정을 병합하고 지정한 설정으로 덮어 쓰며 나머지는 기본값으로 사용합니다.

왜 우리가 사용하고 있습니까? 음 ... 이것이 JavaScript가 작동하는 방식이며 jQuery 정신에서 볼 때 정보를 전달하는 데 매우 간결하고 유연한 방법입니다.

$("#theId").click(function() { /* body here */ }); 

는 그 다음 (function() {})는 익명 함수입니다 :이 상황에서 의미하는 경우

+4

"왜"라는 말을 사용하면 변수 수를 함수에 쉽게 전달할 수 있습니다. (그건 나에게 가장 합리적인 문구입니다.) –

+5

아주 좋은 답변이지만, 다른 사용법에 대한 예제를 추가하면 아주 좋습니다. – uzay95

+0

@ uzay95 - 내 머리 꼭대기에서 몇 가지 예를 추가했습니다. 거기에는 많은 사례가 있습니다. –

7

그것은 중 하나 인 JavaScript object literal 또는 더 구체적으로 JSON은 Ajax를 통해 매개 변수를 보내기에 올 때. JSON은 JavaScript 리터럴의 하위 집합입니다.

// This is JSON data sent via the Ajax request (JSON is subset of JavaScript object literals) 
var json = {id: 1, first_name: "John", last_name: "Smith"}; 

// This is a JavaScript object literal, it is not used for transfer of data so doesn't need to be JSON 
var jsol = {type: 'POST', url: url, data: json}; 

$.ajax(jsol); 

여기에 대한 자세한 내용을 읽어 보시기 바랍니다 :

+1

+1 ** empty ** json structure btw – OscarRyz

+6

"JSON"보다는 개체 리터럴 구문을 사용하여 작성된 개체가 더 정확하다고 할 수 있습니다. –

+9

이것은 JavaScript 객체 리터럴입니다. JSON 구문 (JavaScript 객체 리터럴 구문 ** 하위 집합 **)을 따르지 않으므로 JSON이 아닙니다. – Quentin

4

. 그러나 예를 들자면 그게 무슨 뜻인지 확신 할 수 없습니다.

+0

위임 기능과 같습니다. – uzay95

+2

simliar. 익명 함수는 본질적으로 재사용을 계획하지 않는 "인라인 함수"입니다. 대리자가 예상되는 곳이면 익명의 함수를 사용할 수 있습니다. 그것이 여기에서 작동하는 이유입니다. click 함수는 델리게이트를 기대합니다 (다른 곳에서 함수를 재사용 할 계획이라면 델리게이트 함수를 사용할 것입니다). – Armstrongest

10

내말은 우리가 포장하고있는 내용입니까?

아니요. JSON (JavaScript Object Notation)입니다. 귀하의 예제에서 당신은 누구의 재산 개체와 기능 ajaxSetup를 호출하고 있습니다 :

error: fError, 
compelete: fComp, 
success: fSucc 

예를 들어, "사용자"개체를 만들 수는 쓸 수있다 : 다음

user = { 
    "name":"Oscar", 
    "lastName":"Reyes" 
}; 

그리고이 중 하나를 사용 그 속성 :

alert(a.name); 

쇼 : 오스카

무엇 요 거기에 귀하의 코드에서 볼 수있는 개체의 생성 및 인수로 전달합니다.

그것은에 해당 될 것이다 :

var setUpInfo = { 
    "error": fError, 
    "compelete": fComp, 
    "success": fSucc 
}; 

$.ajaxSetup(setUpInfo); 
+18

실제로는 JSON이 아닙니다. 멤버 이름을 따옴표로 묶어야합니다. 그것은 물론 완벽하게 유효한 자바 스크립트입니다. 또한 사용자 객체는'='대신':'을 사용해야합니다 – friedo

+0

- fixed = with : – OscarRyz

+2

JavaScript 객체 리터럴 표기법이지만 JSON은 아닙니다. http://json.org에서 "JSON은 JavaScript 프로그래밍 언어의 하위 집합을 기반으로합니다 .JSON은 완전히 언어 독립적 인 텍스트 형식이지만 C 언어 계열의 프로그래머에게 익숙한 규칙을 사용합니다. C, C++, C#, Java, JavaScript, Perl, Python 및 기타 많은 " –

6

문제는 표기에 대해이었다 "({})".

이 컨텍스트에서 $ .ajaxSetup과 같은 표현식 뒤에 "(...)"을 붙이면 표현식에 의해 지정된 함수가 호출됩니다.

괄호 안의 표현식 (쉼표로 구분 된 표현식 목록 일 수 있음)은 함수에 전달 된 인수 값 또는 값 목록을 가져옵니다.

마지막으로 표현식 컨텍스트에서 "{...}"을 사용하면 이름 - 값 속성이 지정된 객체가 생성됩니다. 이것은 JSON과 비슷하지만 일반적으로 합법적 인 JS 객체 리터럴입니다.

관련 문제