在具有多个对象的jQuery中使用$.extend函数

在具有多个对象的jQuery中使用$.extend函数,jquery,Jquery,我是jQuery新手,我想了解jQuery中的$.extend()函数 有人能解释一下下列陈述之间的区别吗 $.extend(true,ob1,ob2); $.extend(true,{},ob1,ob2); $.extend(true,ob1,{},ob2); $.extend(true,ob1,ob2,{}); 谢谢 Anand让我们从extend函数的定义开始: 向$.extend()提供两个或多个对象参数时,所有对象的属性都会添加到目标对象中。忽略null或未定义的参数。 现在让

我是jQuery新手,我想了解jQuery中的$.extend()函数

有人能解释一下下列陈述之间的区别吗

$.extend(true,ob1,ob2);

$.extend(true,{},ob1,ob2);

$.extend(true,ob1,{},ob2);

$.extend(true,ob1,ob2,{});
谢谢


Anand

让我们从
extend
函数的定义开始:

$.extend()
提供两个或多个对象参数时,所有对象的属性都会添加到目标对象中。忽略null或未定义的参数。

现在让我们看看您的示例代码:

1. $.extend(true,ob1,ob2);
目标是ob1,这个将把ob2参数添加到它的参数中

2. $.extend(true,{},ob1,ob2);
目标是一个新对象(用{}定义)。这个新对象将具有来自两个对象(ob1和ob2)的参数

目标是ob1,它将添加来自新对象(它没有意义)和对象ob2的参数。它与新对象参数一起工作吗


目标是ob1,它将添加来自对象ob2和新对象的参数(也没有意义)。它与新的对象参数一起工作吗?

让我们从
extend
函数的定义开始:

$.extend()
提供两个或多个对象参数时,所有对象的属性都会添加到目标对象中。忽略null或未定义的参数。

现在让我们看看您的示例代码:

1. $.extend(true,ob1,ob2);
目标是ob1,这个将把ob2参数添加到它的参数中

2. $.extend(true,{},ob1,ob2);
目标是一个新对象(用{}定义)。这个新对象将具有来自两个对象(ob1和ob2)的参数

目标是ob1,它将添加来自新对象(它没有意义)和对象ob2的参数。它与新对象参数一起工作吗


目标是ob1,它将添加来自对象ob2和新对象的参数(也没有意义)。它与新的对象参数一起工作吗?

最好用一个示例来解释它

var firstObject = {
    "hello": "jonkers",
};
var secondObject = {
    "stradivarius": "bonkers"
};
console.log(firstObject);
>> Object {hello: "jonkers"} 
$.extend(firstObject, secondObject);
console.log(firstObject);
>> Object {hello: "jonkers", stradivarius: "bonkers"}
但是
true
部分是什么意思呢?它是一个布尔值,告诉
$.extend
函数应该进行深度复制

你说这是一份深度拷贝

对于应用于多种语言而不仅仅是JavaScript的对象,有两种不同类型的“复制”,即
浅层
深层
。 浅复制是指仅获取对该对象(及其包含的所有对象)的引用并进行复制,从而导致
copy\u对象中更改的值
反映在
original\u对象
中。 深度复制是一个真正的全新对象,您可以通过三种方式操纵它,而不会影响原始对象

您想知道的最后一个示例是完全相同的调用,只是需要多个对象才能放入第一个对象。 因此,api调用将是

$.extend(true, firstObject, secondObject, third, fourth, n-objects);
可以阅读更多关于这方面的内容


最好用一个例子来解释

var firstObject = {
    "hello": "jonkers",
};
var secondObject = {
    "stradivarius": "bonkers"
};
console.log(firstObject);
>> Object {hello: "jonkers"} 
$.extend(firstObject, secondObject);
console.log(firstObject);
>> Object {hello: "jonkers", stradivarius: "bonkers"}
但是
true
部分是什么意思呢?它是一个布尔值,告诉
$.extend
函数应该进行深度复制

你说这是一份深度拷贝

对于应用于多种语言而不仅仅是JavaScript的对象,有两种不同类型的“复制”,即
浅层
深层
。 浅复制是指仅获取对该对象(及其包含的所有对象)的引用并进行复制,从而导致
copy\u对象中更改的值
反映在
original\u对象
中。 深度复制是一个真正的全新对象,您可以通过三种方式操纵它,而不会影响原始对象

您想知道的最后一个示例是完全相同的调用,只是需要多个对象才能放入第一个对象。 因此,api调用将是

$.extend(true, firstObject, secondObject, third, fourth, n-objects);
可以阅读更多关于这方面的内容


请看这里请看这里谢谢您的快速响应谢谢您的快速响应谢谢您的解释谢谢您的解释