2016-04-03 19 views

Trả lời

24

Angular2 không cung cấp bất kỳ thứ gì như thế này.

Bạn có thể sử dụng ví dụ Object.assign()

Object.assign(target, source_1, ..., source_n) 
+6

Hãy thận trọng với IE. Theo MDN, nó không được hỗ trợ. – lukeatdesignworks

+1

Trình duyệt Android không hỗ trợ tính năng này: http://kangax.github.io/compat-table/es6/#test-Object_static_methods_Object.assign – Chris

+4

Nếu bạn đang sử dụng Angular-CLI, hãy tìm 'poyfills.ts' và bỏ ghi chú mã hỗ trợ IE9-11. – shammelburg

13

Theo MDN, Object.assign() chưa được hỗ trợ bởi trình duyệt IE và Android. Nếu bạn cài đặt một phiên bản nguyên cảo của 2.1 hoặc cao hơn mặc dù, bạn có thể sử dụng Object Spread thay vì:

let obj = { x: 1, y: "string" }; 
var newObj = {...obj, z: 3, y: 4}; // { x: number, y: number, z: number } 

Nếu bạn không muốn sử dụng nguyên cảo, thì đây là một simple polyfill từ chuyển đổi nguyên cảo của các bên trên vào javascript :

Object.assign = Object.assign || function(t) { 
    for (var s, i = 1, n = arguments.length; i < n; i++) { 
     s = arguments[i]; 
     for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) 
      t[p] = s[p]; 
    } 
    return t; 
}; 

var obj = { x: 1, y: "string" }; 
var newObj = Object.assign({}, obj, { z: 3, y: 4 }); 

View on Typescript Playground

Các vấn đề liên quan