let globalObject = {
alpha: 'Alpha Value',
beta: {betaGlobal1: 'Default Beta Global 1 Value'}
};
let localObject = {
betaLocal: 'Custom Local Beta Value', // <= May be present or absent
gamma: 'Gamma Value'
};
如果本地对象包含属性betaLocal
,我想在全局对象中更新相应的beta.betaGlobal
属性。否则,我想向本地对象添加一个betaLocal
属性,该属性与其在全局对象中的beta.betaGlobal
对应属性相对应。这里是没有ES2015销毁的地方:
let propertyName = 'betaGlobal1'; let globalObject = { alpha: 'Alpha Value', beta: {betaGlobal1: 'Default Beta Global 1 Value'} }; let localObject = { betaLocal: 'Custom Local Beta Value', // <= May be present or absent gamma: 'Gamma Value' }; // ATTEMPT FOUR let beta = localObject.betaLocal || globalObject.beta[propertyName]; localObject.betaLocal = globalObject.beta[propertyName] = beta; console.log(globalObject); console.log(localObject);
// ATTEMPT FOUR
之前,我也尝试过:
// ATTEMPT ONE if (!localObject.hasOwnProperty('betaLocal')) { localObject.betaLocal = globalObject.beta[propertyName]; } else { globalObject.beta[propertyName] = localObject.betaLocal; }
// ATTEMPT TWO if (!localObject.hasOwnProperty('betaLocal')) { localObject.betaLocal = globalObject.beta[propertyName]; } globalObject.beta[propertyName] = localObject.betaLocal;
// ATTEMPT THREE let beta = localObject.betaLocal || globalObject.beta[propertyName]; localObject.betaLocal = beta; globalObject.beta[propertyName] = beta;
它们都起作用,所以很好。但是我想[[真正想做的是使用ES2015 +对象解构传达了以上内容。
但是我实在无法解决。可能吗?
let propertyName = 'betaGlobal1';
let globalObject = {
alpha: 'Alpha Value',
beta: {betaGlobal1: 'Default Beta Global 1 Value'}
};
let localObject = {
betaLocal: 'Custom Local Beta Value', // <= May be present or absent
gamma: 'Gamma Value'
};
// ATTEMPT FIVE
if (localObject.hasOwnProperty('betaLocal')) {
({betaLocal: globalObject.beta.betaGlobal1} = localObject);
}
else {
({beta: {betaGlobal1: localObject.betaLocal}} = globalObject);
}
console.log(globalObject);
console.log(localObject);