Есть ли в JS способ переопределить поведение объекта по умолчанию, когда он де-структурирован?
// Normally destructing lifts properties from an object
const foo = {
a: 1,
b: 2,
};
const { a, b } = foo; // a = 1, b = 2
// I would like to have a method return the properties to be
// destructured
const bar = {
toObject: () => {
return { a, b };
},
};
const { a, b } = bar; // a = undefiner, b = undefined
Я знаю, что могу просто использовать const { a, b } = bar.toObject();
, но это требует от потребителя объекта знать, как работает его внутреннее устройство, и нарушает принцип наименьшего удивления.
Самым близким, что я могу придумать, к тому, что я хочу, является магический метод toJSON
.