02. Copying Objects
Object.assign
Object.assign
Функция Object.assign
получает список объектов и копирует в первый target
свойства из остальных. При этом последующие свойства перезаписывают предыдущие. Этот прием так же можно использовать для поверхностного копирования.
Особенности:
Object.assign
копирует как строковые ключи, так и символьныеКопируются только собственные перечисляемые свойства. Унаследованные и неперечисляемые свойства игнорируются.
Чтение свойства - это обычная операция получения свойства. Если свойство представляет собой метод доступа, то копируется только полученное значение, а не сам метод.
Запись свойства в
target
- это обычная операция присваивания свойства. Функции setter-ы не копируются.Нельзя скопировать метод, использующий
super
в другой объект.
Для полного копирования всех свойств, включая копирование методов доступа необходимо использовать следующие функции:
Способ 2:
Метод Object.assign
можно использовать для заполнения значений по умолчанию:
A method that uses super is firmly connected with its home object (the object it is stored in). There is currently no way to copy or move such a method to a different object.
Deep copy
Для создания полностью идентичной копии другого объекта необходимо выполнить два шага:
Копия должна иметь тот же прототип
Копия должна иметь те же атрибуты с теми же значениями, что и оригинал.
Шаги алгоритма:
Get an array with the keys of all own properties of source.
Iterate over those keys.
Retrieve a property descriptor.
Use that property descriptor to create an own property in target.
Last updated
Was this helpful?