为什么我们在jQuery中使用"({})"?

uza*_*y95 77 javascript jquery json

我们为什么要用({ })

它是代表吗?

使用这种语法意味着什么?

我们用它包装什么?

例如:

$.ajaxSetup ({ // <-- THIS
    error: fError,
    compelete: fComp,
    success: fSucc
}); // <-- AND THIS
Run Code Online (Sandbox Code Playgroud)

Nic*_*ver 158

{}是JavaScript中的对象表示法.例如:

$('selector').plugin({ option1: 'value' });
Run Code Online (Sandbox Code Playgroud)

在这种情况下,您将包含设置的对象传递给插件.插件可以将其作为对象处理,无论它被引用为什么,例如:

settings.option1 //the option you passed in.
Run Code Online (Sandbox Code Playgroud)

当然它有更多的用途,但这是jQuery中最常见的例子.同样是真实的.animate(),$.ajax(),.css()函数等等凡是需要性质通常使用这种格式.


根据要求,其他一些示例:
传递的对象中的任何对象也可以是一个函数,而不仅仅是属性,例如:

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

这会将该输入的焦点事件设置为具有警报.另一个是扩展一个对象,为它添加属性,如下所示:

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

现在person有了last_name财产.这通常也被插件使用,采用默认设置,然后合并您传入的任何设置,使用您指定的任何设置进行覆盖,其余使用默认设置.

我们为什么要用它? 嗯......这就是JavaScript的工作方式,以及jQuery的精神:它是一种非常简洁灵活的传递信息的方式.

  • 非常好的答案,但如果你添加一些关于其他用法的例子,它将非常好. (5认同)
  • 我会说"为什么"它允许您轻松地将可变数量的参数传递给函数.(这是对我来说最有意义的措辞.) (4认同)

Osc*_*Ryz 10

我的意思是,我们包装它的是什么?

不,那是JavaScript对象符号(JSON).在您的示例中,您将ajaxSetup使用其属性为的对象调用该函数 :

error: fError,
compelete: fComp,
success: fSucc
Run Code Online (Sandbox Code Playgroud)

例如,要创建一个"用户"对象,您可以编写:

user = { 
    "name":"Oscar", 
    "lastName":"Reyes"
};
Run Code Online (Sandbox Code Playgroud)

然后使用其中一个属性:

alert( a.name );
Run Code Online (Sandbox Code Playgroud)

节目:奥斯卡

你在那里(在你的代码中)看到的是创建一个对象并将其作为参数传递.

它相当于:

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

$.ajaxSetup( setUpInfo );
Run Code Online (Sandbox Code Playgroud)

  • 它实际上是*不是*JSON,它要求引用成员名称.当然,这是完全有效的Javascript.此外,您的用户对象应使用`:`而不是`=` (18认同)
  • 它是JavaScript对象文字表示法,但不是JSON.正如http://json.org所说 - "JSON基于JavaScript编程语言的一个子集.JSON是一种完全独立于语言的文本格式,但使用C语言系列程序员熟悉的约定,包括C,C++,C#,Java,JavaScript,Perl,Python等等" (2认同)

Ivo*_*bev 7

在通过Ajax发送参数时,它可以是JavaScript对象文字,也可以是更具体的JSON.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);
Run Code Online (Sandbox Code Playgroud)

请在这里阅读更多相关信息:

  • 它是一个JavaScript对象文字.它不是JSON,因为它不符合JSON语法(这是JavaScript对象文字语法的**子集**). (9认同)
  • 说它是用对象文字语法编写的对象而不是"JSON"更准确. (6认同)

dla*_*rte 6

问题是关于"({})"的符号.

在此上下文中,括号"(...)"跟在表达式后面,例如$ .ajaxSetup,会导致调用表达式指定的函数.

括号内的表达式(可以是逗号分隔的表达式列表)会产生一个值(或值列表),它是传递给函数的参数.

最后,当在表达式上下文中使用"{...}"时,它构造一个具有指定的name-value属性的对象.这就像JSON,但更常见的是,它是任何合法的JS对象文字.