gpt4 book ai didi

javascript - ForIn 合并对象配置

转载 作者:行者123 更新时间:2023-11-28 04:44:53 25 4
gpt4 key购买 nike

为什么我无法运行 ForIn 来合并构造函数上的配置?

我有一个带有大量开放配置的小类,因此我想简单地运行 ForIn 以缩短代码。

基本上就是这样

var FormMessage = (function() {

...

function FormMessage(args) {
this.Conf = {
mobile:args.mobile || Configurations.mobile,
form: {
selector: args.form.selector || Configurations.formSelector
},
...
}
}
...
return FormMessage;
})();

var i = new FormMessage({mobile: true, form:{selector: '.the-first'}}),
e = new FormMessage({mobile: false, form:{selector: '.the-second'}});

进入此

var FormMessage = (function() {
...
function FormMessage(args) {
for (var attr in args) { this.Conf[attr] = args[attr]; }
}
...

return FormMessage;
})();

var i = new FormMessage({mobile: true, form:{selector: '.the-first'}}),
e = new FormMessage({mobile: false, form:{selector: '.the-second'}});

但是如果我这样做,那么当我第二次初始化该对象时,它将覆盖第一个对象。

你们知道我怎样才能做到这一点吗?

感谢您的帮助。

最佳答案

也许类似于下面的代码?我也认为IIFE没有必要。

function FormMessage(conf, args) {
Object.keys(args).forEach(e => conf[e] = args[e]);
return Object.assign({}, conf); // returns a fresh new object
}
// initial config object
var confObj = {mobile: 'wow'};
var i = new FormMessage(confObj, {mobile: true, form:{selector: '.the-first'}}),
e = new FormMessage(confObj, {mobile: false, form:{selector: '.the-second'}});

console.log(i, e);

关于javascript - ForIn 合并对象配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43469622/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com