sách gpt4 ai đã đi

Đối tượng lan truyền so với Object.assign

In lại Tác giả: IT Lao Gao Thời gian cập nhật: 2023-10-28 11:04:56 29 4
mua khóa gpt4 Nike

Giả sử tôi có một tùy chọn biến, tôi muốn thiết lập một số giá trị mặc định.

Ưu điểm/nhược điểm của hai lựa chọn này là gì?

Sử dụng Object Spreading

tùy chọn = {...tùy chọnMặc định, ...tùy chọn};

Hoặc sử dụng Object.assign

tùy chọn = Object.assign({}, optionsDefault, tùy chọn);

Đây là làmĐiều này khiến tôi thắc mắc.

1 Câu trả lời

Điều này không hẳn là đầy đủ.

Cú pháp mở rộng

tùy chọn = {...tùy chọnMặc định, ...tùy chọn};

lợi thế:

  • Nếu bạn viết mã để thực thi trong môi trường không có hỗ trợ gốc, bạn có thể biên dịch cú pháp này (thay vì sử dụng polyfill). (Lấy Babel làm ví dụ.)

  • Ít dài dòng hơn.

khuyết điểm:

  • Khi câu trả lời này được viết lần đầu tiên, nó là một đề xuất , không được chuẩn hóa. Khi làm việc với một đề xuất, hãy cân nhắc xem bạn sẽ làm gì nếu bạn đang viết mã bằng đề xuất đó ngày hôm nay và nó không được chuẩn hóa hoặc thay đổi khi nó hướng tới chuẩn hóa. Tính năng này đã được chuẩn hóa trong ES2018.

  • Lời nói chứ không phải hành động.


Đối tượng.assign()

tùy chọn = Object.assign({}, optionsDefault, tùy chọn);

lợi thế:

  • chuẩn hóa.

  • năng động. Ví dụ:

    var nguồn = [{a: "A"}, {b: "B"}, {c: "C"}];
    tùy chọn = Object.assign.apply(Object, [{}].concat(nguồn));
    // hoặc
    tùy chọn = Object.assign({}, ...nguồn);

khuyết điểm:

  • Để biết thêm chi tiết.
  • Nếu bạn viết mã để thực thi trong môi trường không có hỗ trợ gốc, bạn sẽ cần polyfill.

Đây là cam kết khiến tôi phải thắc mắc.

Điều này không liên quan trực tiếp đến yêu cầu của bạn. Mã không sử dụng Đối tượng.assign(), nhưng thay vào đó sử dụng mã người dùng thực hiện cùng một hoạt động (đối tượng-gán). Có vẻ như họ đang sử dụng Babel để biên dịch mã đó (và đóng gói nó với Webpack), đó chính là điều tôi muốn nói: cú pháp bạn có thể biên dịch. Rõ ràng là họ thích đối tượng-gán Bao gồm trong bản dựng của họ như một phần phụ thuộc.

Liên quan đến javascript - object spread và Object.assign, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/32925460/

29 4 0
CNTT Lao Gao
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com