Computer >> Máy Tính >  >> Lập trình >> Javascript

Sự khác biệt giữa .extend () / .assign () và .merge () trong thư viện Lodash.

gán / mở rộng lấy từng thuộc tính trong nguồn, sao chép giá trị nguyên trạng của nó đến đích. Nếu bản thân các giá trị thuộc tính là các đối tượng, thì không có quá trình duyệt đệ quy đối với các thuộc tính của chúng. Đây còn được gọi là sao chép / nhân bản nông. Toàn bộ đối tượng sẽ được lấy từ nguồn và đặt thành một đích.

Merge lấy từng thuộc tính trong nguồn, kiểm tra xem thuộc tính đó có phải là chính đối tượng hay không. Nếu sau đó nó đi xuống một cách đệ quy và cố gắng ánh xạ các thuộc tính của đối tượng con từ nguồn đến đích.

Ví dụ

let _ = require('lodash');
let destination = {
   a: {
      b: 1,
      c: 2
   },
};
let source = {
   a: {
      d: 2,
      c: 3
   },
};
console.log(_.merge(destination, source));
console.log(_.extend(destination, source));

Đầu ra

Điều này sẽ cung cấp đầu ra -

{ a: { b: 1, c: 3, d: 2 } }
{ a: { d: 2, c: 3 } }