Tóm tắt: trong hướng dẫn này, bạn sẽ học cách sao chép các đối tượng trong JavaScript, bao gồm cả . Để sao chép một đối tượng trong JavaScript, bạn có ba tùy chọn:
- Sử dụng cú pháp spread[
...
] - Sử dụng phương thức
Object.assign[]
- Chuyển đổi qua string
0 sau đólet arr1 = [ 2, 3, 4 ] /// mình muốn tạo 1 arr2 dạng như này [ 1, 2, 3, 4, 5 ] let arr2 = [ 1, ... arr1, 5 ] /// xong 😄 /// javascript có hàm Math.max[1, 2, 3] => kết quả là 3 /// bạn muốn tính max trong mangr arr2 ở trên? let maxArr2 = Math.max[...arr2] /// đôi khi bạn cần convert string qua array let strMyName = "Trương Thanh Hùng ĐẸp Trai Khoai To" let arrMyName = [... strMyName ]
1 ngược về để tạo ra object .let arr1 = [ 2, 3, 4 ] /// mình muốn tạo 1 arr2 dạng như này [ 1, 2, 3, 4, 5 ] let arr2 = [ 1, ... arr1, 5 ] /// xong 😄 /// javascript có hàm Math.max[1, 2, 3] => kết quả là 3 /// bạn muốn tính max trong mangr arr2 ở trên? let maxArr2 = Math.max[...arr2] /// đôi khi bạn cần convert string qua array let strMyName = "Trương Thanh Hùng ĐẸp Trai Khoai To" let arrMyName = [... strMyName ]
hùng ebudezain
hùng ebudezain
hùng đẹp trai
cú pháp spread
hùng ebudezain
hùng thông minh lắm
hùng thông minh lắm
ahihi đồ ngốc trương thanh hùng nè
const person = {
firstName: ' Hùng Đẹp Trai',
lastName: ' Trương Thanh'
};
// Sử dụng spread ...
let p1 = {
...person
};
đọc dữ liệu hộ bố
tôi thích vậy đó
The Spread Syntax
- Cú pháp spread biểu diễn dạng dấu 3 chấm: ...
- Spread Syntax cho phép duyệt qua các phần tử và truyền vào phương thức như các đối số
- Spread Syntax là Syntax của es6 nha. nếu bạn nào code javascript yêu cầu trình duyệt thấp thì cẩn thận
bài viết được viết bởi trương thanh hùng //ebudezain.com/
đọc dữ liệu hộ bố
đọc dữ liệu hộ bố
Tính tương thích của trình duyệt web:
bài viết được viết bởi trương thanh hùng //ebudezain.com/
hùng ebudezain
tôi thích vậy đó
hùng thông minh lắm
hùng đẹp trai
đọc dữ liệu hộ bố
ahihi đồ ngốc trương thanh hùng nè
hùng ebudezain
đọc dữ liệu hộ bố
tôi thích vậy đó
ahihi đồ ngốc trương thanh hùng nè
đọc dữ liệu hộ bố
hùng ebudezain
bài viết được viết bởi trương thanh hùng //ebudezain.com/
ahihi đồ ngốc trương thanh hùng nè
hùng ebudezain
hùng thông minh lắm
Spread Syntax thường xuất hiện trong code các pro nodejs, chứ code js trình duyệt thì thôi né đi 😄
hùng đẹp trai
hùng đẹp trai
hùng đẹp trai
hùng thông minh lắm
hùng đẹp trai
ví dụ khácdùngSpread Syntax
hùng đẹp trai
đọc dữ liệu hộ bố
hùng ebudezain
1 ví dụ khác khi dùng Spread Syntax như sau:
hùng ebudezain
hùng thông minh lắm
let arr1 = [ 2, 3, 4 ]
/// mình muốn tạo 1 arr2 dạng như này [ 1, 2, 3, 4, 5 ]
let arr2 = [ 1, ... arr1, 5 ] /// xong 😄
/// javascript có hàm Math.max[1, 2, 3] => kết quả là 3
/// bạn muốn tính max trong mangr arr2 ở trên?
let maxArr2 = Math.max[...arr2]
/// đôi khi bạn cần convert string qua array
let strMyName = "Trương Thanh Hùng ĐẸp Trai Khoai To"
let arrMyName = [... strMyName ]
tôi thích vậy đó
ahihi đồ ngốc trương thanh hùng nè
Cú Fap Fap Fap pháp assign javascript
tôi thích vậy đó
hùng ebudezain
hùng thông minh lắm
đọc dữ liệu hộ bố
đọc dữ liệu hộ bố
tôi thích vậy đó
hùng ebudezain
hùng đẹp trai
hùng ebudezain
Object.assign[]
được sử dụng để sao chép các giá trị của tất cả thuộc tính có thể liệt kê từ một hoặc nhiều đối tượng nguồn đến một đối tượng đích. Nó sẽ trả về đối tượng đích đó.
tôi thích vậy đó
bài viết được viết bởi trương thanh hùng //ebudezain.com/
hùng ebudezain
Cú pháp
hùng thông minh lắm
bài viết được viết bởi trương thanh hùng //ebudezain.com/
đọc dữ liệu hộ bố
hùng thông minh lắm
Object.assign[target, ...sources]
đọc dữ liệu hộ bố
bài viết được viết bởi trương thanh hùng //ebudezain.com/
hùng ebudezain
hùng đẹp trai
hùng ebudezain
Tương thích trình duyệt
hùng ebudezain
hùng đẹp trai
tôi thích vậy đó
hùng thông minh lắm
tôi thích vậy đó
Cách copy object
bài viết được viết bởi trương thanh hùng //ebudezain.com/
ahihi đồ ngốc trương thanh hùng nè
hùng thông minh lắm
đọc dữ liệu hộ bố
// using Object.assign[] method
const person = {
firstName: ' Hùng Đẹp Trai',
lastName: ' Trương Thanh'
};
let p2 = Object.assign[{}, person];
hùng thông minh lắm
các ví dụ khác
tôi thích vậy đó
ahihi đồ ngốc trương thanh hùng nè
bài viết được viết bởi trương thanh hùng //ebudezain.com/
tôi thích vậy đó
const target = { a: 1, b: 2 };
const source = { b: 4, c: 5 };
const returnedTarget = Object.assign[target, source];
console.log[target];
// expected output: Object { a: 1, b: 4, c: 5 }
console.log[returnedTarget];
// expected output: Object { a: 1, b: 4, c: 5 }
hùng đẹp trai
hùng thông minh lắm
đọc dữ liệu hộ bố
tôi thích vậy đó
hùng ebudezain
hùng ebudezain
bài viết được viết bởi trương thanh hùng //ebudezain.com/
bài viết được viết bởi trương thanh hùng //ebudezain.com/
hùng đẹp trai
Lưu ý là khi dùng, nếu bị trùng key thì xem như giá trị sau [ trong source ] sẽ ghi đè lên giá trị trước [ trong target ]
hùng thông minh lắm
ahihi đồ ngốc trương thanh hùng nè
ví dụ:
hùng thông minh lắm
tôi thích vậy đó
bài viết được viết bởi trương thanh hùng //ebudezain.com/
const a = { name: 'foo' }
const b = Object.assign[a, { name: 'bar', age: 1 }, { id: 9 }]
console.log[b] // { name: 'bar', age: 1, id: 9 } => object a ban đầu có name = 'foo' đã đi vào quên lãng
hùng thông minh lắm
đọc dữ liệu hộ bố
ahihi đồ ngốc trương thanh hùng nè
đọc dữ liệu hộ bố
tôi thích vậy đó
hùng thông minh lắm
đọc dữ liệu hộ bố
hùng ebudezain
hùng ebudezain
Cả spread [...
] và Object.assign[]
đều thực hiện một shallow copy trong khi JSON methods lại là một deep copy.
bài viết được viết bởi trương thanh hùng //ebudezain.com/
bài viết được viết bởi trương thanh hùng //ebudezain.com/
ahihi đồ ngốc trương thanh hùng nè
đọc dữ liệu hộ bố
bài viết được viết bởi trương thanh hùng //ebudezain.com/
Cú Fap JSON javascript
bài viết được viết bởi trương thanh hùng //ebudezain.com/
ahihi đồ ngốc trương thanh hùng nè
ahihi đồ ngốc trương thanh hùng nè
hùng đẹp trai
hùng đẹp trai
đọc dữ liệu hộ bố
hùng ebudezain
hùng thông minh lắm
hùng thông minh lắm
Bạn có thể tưởng tượng bạn có 1 object bạn chuyển về string thì string trong javascript không hề có reference. sau đó parse ngược về object thì lúc này đó là object mới. khuyến cáo nếu bạn code javascript có trình duyệt nên sử dụng cách này đỡ suy nghĩ về sự tương thích trình duyệt.
hùng thông minh lắm
hùng ebudezain
hùng thông minh lắm
// using JSON
const person = {
firstName: ' Hùng Đẹp Trai',
lastName: ' Trương Thanh'
};
let p3 = JSON.parse[JSON.stringify[person]];
ahihi đồ ngốc trương thanh hùng nè
hùng đẹp trai
hùng ebudezain
hùng đẹp trai
ahihi đồ ngốc trương thanh hùng nè
ahihi đồ ngốc trương thanh hùng nè
hùng đẹp trai
bài viết được viết bởi trương thanh hùng //ebudezain.com/
bài viết được viết bởi trương thanh hùng //ebudezain.com/
hùng đẹp trai
đọc dữ liệu hộ bố
bài viết được viết bởi trương thanh hùng //ebudezain.com/
Shallow Copy vs Deep Copy
hùng ebudezain
đọc dữ liệu hộ bố
tôi thích vậy đó
đọc dữ liệu hộ bố
hùng ebudezain
hùng thông minh lắm
Trong JavaScript, bạn sử dụng các biến để lưu trữ các giá trị có thể là primitive or references. Khi bạn tạo một bản sao của một giá trị được lưu trữ trong một biến, bạn sẽ tạo một biến mới có cùng giá trị.
hùng đẹp trai
hùng ebudezain
hùng đẹp trai
ahihi đồ ngốc trương thanh hùng nè
tôi thích vậy đó
tôi thích vậy đó
Tóm gọn: Shallow Copy có nghĩa ta chỉ copy được level đầu, các level sâu hơn sẽ được hiểu là tham chiếu.