首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >$.extend文档说明

$.extend文档说明
EN

Stack Overflow用户
提问于 2009-08-06 21:44:35
回答 1查看 385关注 0票数 0

遵循jQuery不会更改默认值或选项的值。返回值与empty相同。empty已更改,并由合并的数据填充。一切都很好。

代码语言:javascript
复制
var empty = {} 
var defaults = { validate: false, limit: 5, name: "foo" }; 
var options = { validate: true, name: "bar" }; 
$.extend(empty, defaults, options);

然而,我看到有人将true作为第一个选项。

代码语言:javascript
复制
var defaults = { validate: false, limit: 5, name: "foo" }; 
var options = { validate: true, name: "bar" };  
var output = $.extend(true, defaults, options);

在这种情况下,defaults已被changed.options相同,并且返回值与默认值相同。

现在尝试传递false。

代码语言:javascript
复制
var defaults = { validate: false, limit: 5, name: "foo" }; 
var options = { validate: true, name: "bar" }; 
var output = $.extend(false, defaults, options);

在这种情况下,默认值和选项不会更改。因此,传递true与

代码语言:javascript
复制
var defaults = { validate: false, limit: 5, name: "foo" }; 
var options = { validate: true, name: "bar" }; 
var output = $.extend(defaults, options);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-08-06 21:56:15

这是预期的行为。当您传入true作为第一个参数时,这意味着进行深度复制,而不是共享对象结构。下一个参数defaults通过包含可选的布尔深度复制参数成为目标,当该参数为真时。下面是1.3.2中的相关代码片段:

代码语言:javascript
复制
// 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时,您可以看到它隐式地构造了一个新对象,该对象将成为目标。此目标将是以下两个对象的深层副本。

这在extend函数的选项中有说明。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1241691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档