Есть ли способ обновить свойство 'settings' в этой функции без необходимости перезаписывать его целиком?
Трудно сказать по вашему вопросу, что вы на самом деле делаете, но если цель состоит в том, чтобы добавить newdata
к существующим настройкам, вы просто распространяете это в неправильном месте:
function foo(newdata) {
utils.method('GET', '/auth', {
response: {
data: {
settings: {
last_email_notification_shown_date: new Date(),
email_notifications: null,
...newdata // <============================ moved
}
}
}
});
}
тогда
foo({
SomeNewProperty: 'whatever'
});
Если вам нужно вызвать foo
с объектом, находящимся за пределами settings
, а также внутри settings
, то он становится немного более сложным, но не намного:
function foo(newdata) {
utils.method('GET', '/auth', {
response: {
data: {
...newdata, // <========================
settings: {
last_email_notification_shown_date: new Date(),
email_notifications: null,
...newdata.settings // <========================
},
}
}
});
}
тогда
foo({
settings: {
SomeNewProperty: 'whatever'
},
otherStuff: "foo"
});
Это распространяется newdata
(включая settings
), но затем перезаписывает newdata
settings
в новом объекте с заменой settings
, в котором мы распространяем newdata.settings
.