The new destructuring assignment features of ES6 are fairly well known now (live copy on Babel\'s REPL); in the case of variables that already exist:
Some experimental stuff, building on top of your answer.
If you wanted to get a little cheeky you could emulate the assignment portion of it with a setter. Definitely not practical, but it's a fun way to see what the behaviour might look like on the outside, if maybe you could empty assign o[] =. (Babel)
let a = '1', b = '2';
let o = {z: '26'};
Object.defineProperty(Object.prototype, '', {
set: function (o) {
Object.assign(this, o);
}, configurable: true
});
o[''] = {a, b};
Same issues you face with your answer, actually more, but some food for thought.