Trong ví dụ MDN page forObject.assign(), polyfill ví dụ đầu tiên bao bọc tất cả các nguồn và tham số đích trong Object()
trước khi lặp qua các thuộc tính. (ví dụ: Object(target)
, Object(source1)
, Object(source2)
...).Mục đích của `Object (target)` trong `Object.assign()` polyfill
Văn bản cũng đề cập rằng các thuộc tính bổ sung được thêm trực tiếp vào mục tiêu trước khi trả về đích. Tuy nhiên, gói mục tiêu trong Object()
kết quả trong một đối tượng khác với các thuộc tính tăng thêm đơn giản. (ví dụ: Object(target).newProp !== target.newProp
).
Tất cả các ví dụ được cung cấp có đối tượng làm tham số cho Object.assign()
. Do đó, trường hợp sử dụng cho các tham số đích hoặc đối tượng không phải là đối tượng không rõ ràng.
A) Mục đích của việc bao gồm các tham số trong Object()
là gì? (Tôi đang trong ấn tượng rằng Object.keys(x)
giống như Object.keys(Object(x))
).
B) Trường hợp sử dụng có thể sử dụng Object.assign()
với các đối tượng không phải là đối tượng nào? (Ví dụ một cái gì đó như: Object.assign(1, 'b', [3], true, function(){})
)
'Đối tượng (đích)' đưa đối tượng vào một đối tượng. Ví dụ: 'Object (" 1234 ")' đưa nó vào '[chuỗi đối tượng] {0:" 1 ", 1:" 2 ", 2:" 3 ", 3:" 4 ", chiều dài: 4}' – Mouser
Thông thường tốt nhất để đọc các đặc điểm kỹ thuật kết hợp với các polyfill, vì họ thường cố gắng để nhân rộng các hành vi. Bạn có thể thấy từ [* ed. 6 dự thảo *] (https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.assign), mỗi đối số được chuyển tới * ToObject *. Vì kịch bản gốc không thể truy cập các phương thức bên trong, nên gọi 'Object (target)' và 'Object (source)' là một xấp xỉ (mặc dù không chính xác như nhau, đặc biệt là cho * null * và * undefined *). – RobG
@Mouser. Tôi hiểu Object() làm gì. Những gì tôi không hiểu là lý do tại sao bạn sẽ làm một cái gì đó như Object.assign ([], 'a', 3, function() {}) – Hurelu