这里做的是 combining oldSettings , newSettings .
Code:
https://jsfiddle.net/zt7anuL3/96/
oldSettings ,将指的是“ defaultSettings ”,它们都是从它们开始的 .
playerVars: {
autoplay: 1,
controls: 1,
showinfo: 1,
rel: 0,
iv_load_policy: 3,
cc_load_policy: 0,
fs: 0,
disablekb: 1,
},
newSettings 将是每个 load player 中指定的内容 .
loadPlayer({
target: ".jacketc",
width: 600,
height: 338,
start: 200,
end: 205,
loop:true
});
I tried to do this on my own, but I'm not sure I wrote it correctly.
我需要知道我这样做是否正确,如果我不这样做,那么正确的做法是什么 . 如果你能提供有用的更正 .
有人告诉我,我可以使用 Object.assign()
来组合属性,但是如何做呢?这就是我想要做的吗?
function combineSettings(oldSettings, newSettings) {
const props = Object.keys(newSettings);
const combinedSettings = props.reduce(function combine(combined, prop) {
if (typeof(oldSettings[prop]) === "object") {
const oldProp = oldSettings[prop] || {};
const newProp = newSettings[prop] || {};
combined[prop] = combineSettings(oldProp, newProp);
} else {
combined[prop] = newSettings[prop];
}
return combined;
}, oldSettings);
return combinedSettings;
}
1 回答
看起来你正在努力做
Object.assign()
做的事情 . 您可以使用Object.assign()
组合两个或多个对象的属性 . 你可以找到文档here .需要记住的重要一点是,前面对象的属性会被参数列表中的对象覆盖 .
你可以修改你的功能如下: