Jquery $。扩展文档说明
以下jQuery不会更改默认值或选项的值。返回的值与空值相同。已更改为空,并用合并数据填充。一切都很好Jquery $。扩展文档说明,jquery,Jquery,以下jQuery不会更改默认值或选项的值。返回的值与空值相同。已更改为空,并用合并数据填充。一切都很好 var empty = {} var defaults = { validate: false, limit: 5, name: "foo" }; var options = { validate: true, name: "bar" }; $.extend(empty, defaults, options); 然而,我看到有人将传递true作为第一选择 var defaults =
var empty = {}
var defaults = { validate: false, limit: 5, name: "foo" };
var options = { validate: true, name: "bar" };
$.extend(empty, defaults, options);
然而,我看到有人将传递true作为第一选择
var defaults = { validate: false, limit: 5, name: "foo" };
var options = { validate: true, name: "bar" };
var output = $.extend(true, defaults, options);
在这种情况下,默认值已更改。选项相同,返回值与默认值相同
现在试着传假
var defaults = { validate: false, limit: 5, name: "foo" };
var options = { validate: true, name: "bar" };
var output = $.extend(false, defaults, options);
在这种情况下,默认值和选项不会更改。所以传递true与
var defaults = { validate: false, limit: 5, name: "foo" };
var options = { validate: true, name: "bar" };
var output = $.extend(defaults, options);
这是预期的行为。当您传入true作为第一个参数时,这意味着创建深度副本,而不是共享对象结构。下一个参数,
defaults
通过在参数为true时包含可选的布尔深度复制参数而成为目标。以下是1.3.2中的相关片段:
// copy reference to target object
var target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options;
// Handle a deep copy situation
if ( typeof target === "boolean" ) {
deep = target;
target = arguments[1] || {};
// skip the boolean and the target
i = 2;
}
当您指定false时,您可以看到它隐式地构造了一个新对象,该对象将成为目标。此目标将是以下两个对象的深度副本
这已记录在函数的选项中。我只是坐在这里假装我知道你在说什么。我使用此工具查看文档。现在看来,我以前查看的url要么已经过时,要么只有一半的信息。谢谢我将开始引用jQuery主文档。