Обновление свойства объекта javascript?
У меня есть структура, подобная следующей:
skillet.person = {
name: {
first: '',
last: ''
},
age: {
current: ''
},
birthday: {
day: '',
month: '',
year: ''
}
}
Мне было интересно, как я буду обновлять эти значения? то есть, хотя верно следующее:
skillet.person.name.push({ first: 'blah', last: 'ha'});
но это неправильно? Как я могу это исправить?
Ответы
Ответ 1
Если вы хотите смешать объект с другим, вы можете использовать функцию расширенного расширения jQuery. "Глубокий" означает, что он не перезаписывает name
новым объектом, а скорее перезаписывает свойства внутри такого объекта.
$.extend(true, skillet.person, {
name: {
first: 'updated'
},
birthday: {
day: 'updated',
year: 'updated'
}
});
Теперь skillet.person
обновляет соответствующие свойства, а остальные свойства нетронуты.
Ответ 2
skillet.person.name.first = "blah"
skillet.person.name.last = "ha"
или
skillet.person.name = {first : "blah", last : "ha"}
Ответ 3
push
- это метод Array
, который добавляет новый элемент в массив.
Если вы хотите заменить значение, то:
skillet.person.name = { … };
Если вы хотите сохранить несколько (полных) имен в объекте, вам понадобится свойство для хранения массива объектов вместо одного объекта.
Ответ 4
В последних браузерах с ECMAScript 2015 вы можете:
Object.assign(skillet.person.name, { first: 'blah', last: 'ha'});
который сохранит любой существующий атрибут, не указанный в нужном объекте.
Ссылка: https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/assign