Разница между методом Lodash _.clone () и оператором '=' для копирования объектов

Опубликовано: 6 Декабря, 2021

В этой статье мы узнаем о разнице между использованием метода _.clone () в Lodash и использованием оператора '=' для копирования объектов. Оба эти метода используются для создания копии объекта в JavaScript. Однако оба работают по-разному.

Использование метода _.clone (): метод _.clone () создает новый объект и копирует каждое значение из оригинала в новый объект. Это создает неглубокую копию объекта. Любые изменения исходного объекта не влияют на скопированный объект.

Синтаксис:

 _.clone (объект)

Параметры: эта функция принимает только один параметр, который является объектом, который необходимо скопировать.

Возвращаемое значение: возвращает неглубокую копию данного объекта.

Пример: Пример ниже показывает, что изменение исходного объекта не влияет на объект, скопированный с помощью функции _.clone ().

Javascript

const _ = require( "lodash" );
var originalflower = {
Name: "Rose" ,
color: "Red" ,
petal: 5,
};
// Creating a copy of the object
var copyflower = _.clone(originalflower);
// Printing the cloned object
console.log( "Cloned object : " ,
copyflower);
// As this is a shallow copy, changing
// attributes of one object will not
// affect other object
originalflower.Name = "Red Rose" ;
// Printing original flower
// and cloned flower
console.log( "original flower: " ,
originalflower);
console.log( "copy flower: " , copyflower);

Выход:

 Клонированный объект: {Имя: 'Роза', цвет: 'Красный', лепесток: 5}
оригинальный цветок: {Название: 'Red Rose', цвет: 'Red', лепесток: 5}
копия цветка: {Имя: 'Роза', цвет: 'Красный', лепесток: 5}

Использование оператора '=' для копирования объекта: в этом подходе простое использование оператора '=' указывает скопированный объект на исходный объект, который уже существует. Изменение исходного объекта влияет на скопированный объект.

Пример: Пример ниже показывает, что изменение исходного объекта влияет на объект, скопированный с помощью оператора '='.

Javascript

const _ = require( "lodash" );
var originalFlower = {
Name: "Rose" ,
color: "Red" ,
petal: 5,
};
// Creating a copy of originlFlower
var copyFlower = originalFlower;
console.log( "Copy object : " ,
copyFlower);
// As both originalFlower and
// copyFlower point to same object
// Changing one object will
// affect other also
originalFlower.Name = "Red Rose" ;
// Printing the Name attrbute
// of originalFlower and copyFlower.
console.log( "The name of original flower is - " ,
originalFlower.Name);
console.log( "The name of copy flower is - " ,
copyFlower.Name);

Выход:

 Копировать объект: {Имя: 'Роза', цвет: 'Красный', лепесток: 5}
Название оригинального цветка - Красная роза.
Название копии цветка - Красная роза.