jQuery:这里有什么扩展?

时间:2010-01-14 00:44:49

标签: jquery

$.ajax($.extend(true, {... 

有人能解释这段代码在做什么吗?

3 个答案:

答案 0 :(得分:1)

是。来自:http://docs.jquery.com/Utilities/jQuery.extend

使用一个或多个其他对象扩展一个对象,返回修改后的对象。 如果未指定目标,则扩展JQuery名称空间本身。这对于希望向JQuery添加新方法的插件作者非常有用。

请记住,目标对象将被修改,并将从extend()返回。

如果将boolean true指定为第一个参数,则JQuery执行深层复制,以递归方式复制它找到的任何对象。否则,副本将与原始对象共享结构。 未复制未定义的属性。但是,从对象原型继承的属性将被复制。

答案 1 :(得分:0)

true表示在提供的两个对象之间生成了深层副本。

将第一个对象作为基础(参数#2),以及使用第二个对象“扩展”它将做什么扩展。

来自the jQuery docs

var settings = { validate: false, limit: 5, name: "foo" };
var options = { validate: true, name: "bar" };
jQuery.extend(settings, options);
// settings == { validate: true, limit: 5, name: "bar" }

true作为第一个参数意味着扩展以“深层”方式完成,因此旧对象引用不再存在。

答案 2 :(得分:0)

$.extend()的后续参数被合并为一个对象。第一个参数(true)表示要做一个深层复制。

  

使用一个或多个扩展一个对象   其他人,返回修改后的对象。   如果没有指定目标,则为JQuery   命名空间本身已扩展。这个可以   对于希望的插件作者有用   向JQuery添加新方法。留在   请注意目标对象   修改后,将从中返回   延伸()。

     

如果将布尔值true指定为   第一个参数,JQuery执行得很深   复制,递归复制任何对象   它找到了。否则,副本将   与原始共享结构   (多个)对象。

     

不会复制未定义的属性。   但是,属性继承自   对象的原型将被复制   结束了。