$.ajax($.extend(true, {...
有人能解释这段代码在做什么吗?
答案 0 :(得分:1)
是。来自:http://docs.jquery.com/Utilities/jQuery.extend
使用一个或多个其他对象扩展一个对象,返回修改后的对象。 如果未指定目标,则扩展JQuery名称空间本身。这对于希望向JQuery添加新方法的插件作者非常有用。
请记住,目标对象将被修改,并将从extend()返回。
如果将boolean true指定为第一个参数,则JQuery执行深层复制,以递归方式复制它找到的任何对象。否则,副本将与原始对象共享结构。 未复制未定义的属性。但是,从对象原型继承的属性将被复制。
答案 1 :(得分:0)
true
表示在提供的两个对象之间生成了深层副本。
将第一个对象作为基础(参数#2),以及使用第二个对象“扩展”它将做什么扩展。
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执行得很深 复制,递归复制任何对象 它找到了。否则,副本将 与原始共享结构 (多个)对象。
不会复制未定义的属性。 但是,属性继承自 对象的原型将被复制 结束了。