javascript - 如何在要更新子对象中的单个参数的地方将 2 个对象合并在一起
问题描述
更新
由于发布了这个问题以及某人在下面的评论中提供的链接,$.extend 方法只深入了一层,这解释了我遇到的问题。使用下面链接中提到的解决方案将解决问题。
如何深度合并而不是浅合并?
作为我为我的内部系统构建的 javascript 工具的一部分,我接受一个对象作为类的参数。提供的对象使用$.extend() Jquery 方法与默认设置对象合并。默认设置对象包含类的每个选项,其中包含用于自定义之类的嵌套对象。
我遇到的问题是,如果用户更新嵌套对象中的参数,它似乎会完全覆盖第一个嵌套对象,而不是仅仅覆盖他们在通过$.extend()方法运行时更改的参数。我怎样才能做到这一点,以便用户可以在创建类的实例期间更改嵌套对象中的参数,同时保留该嵌套对象中的其他参数?
默认设置对象如下:
{
"container": "stepperContainer",
"customization": {
"stepper": {
"id": "stepperProgress",
"classes": "container my-3",
"show": false
}
}
};
我提供的设置对象:
{
"customization": {
"stepper": {
"show": false
}
}
然后我在类中使用$.extend()方法:
class Stepper {
defaultSettings() {
return {
"customizations": {
"stepper": {
"id": "stepperProgress",
"classes": "container my-3",
"show": true
}
}
};
}
constructor(data) {
this.settings = $.extend(this.defaultSettings(), data);
}
}
stepper = new Stepper({
"customizations": {
"stepper": {
"show": false
}
}
});
console.log(stepper.settings);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
解决方案
推荐阅读
- ffmpeg - 使用 concat 协议时出现“必须指定至少一个输出文件”错误
- php - 正则表达式:当存在多个时,无法检测特定组中的所有事件
- python - discord.py,我正在制作一个机器人响应,根据您的感受对您做出响应,但仅打印第一个 if 语句中的内容 - probl000000
- sql - 获得与标量函数相同的查询结果
- javascript - 为什么我的小费计算器中不断得到 NaN 值?
- javascript - JSON 日期问题
- python - 何时关闭 MySQL 连接 discord.py
- c++ - 父类为模板时,Union 报错
- python - 反垃圾邮件代码也会不断向机器人发送垃圾邮件
- pandas - 如何加快 groupby 的速度?