Cách ES6/ES7 là cách phổ biến nhất hiện nay vì độ tinh khiết.
1 có thể được sử dụng lại sau nàybaseObject.company = "Microsoft";
const addedPropertyObject = {
const { age, ...deletedPropertyObject } = baseObject;
Thêm và xóa thuộc tính trong ES5. Một vấn đề có thể là
1 đã được điều chỉnh và có thể dẫn đến tác dụng phụbaseObject.company = "Microsoft";
baseObject.company = "Microsoft";
Cũng có một cách để có các phiên bản mới trong ES5 như JavaScript, nhưng điều này sẽ được giải thích sau trong bài viết này. Blog này sẽ theo dõi ngay bây giờ với một mô tả chi tiết về cách hoạt động của việc thêm và xóa
Thêm một thuộc tính vào một đối tượng với ES6 JavaScript
Để hiểu quy trình này trước tiên, chúng ta cần hiểu cách hoạt động của trải rộng trong JavaScript hoạt động. Chức năng này đã được giới thiệu trong ES7 [ECMAScript 7] và được sử dụng rộng rãi trong mọi ứng dụng JavaScript hiện đại. Nó chủ yếu được sử dụng để nhân bản các đối tượng
Về cơ bản, toán tử trải rộng là ba dấu chấm trong một câu lệnh [
3]. Về cơ bản, chúng sao chép vô số thuộc tính riêng của một đối tượng sang một đối tượng mới. Thuộc tính đếm được cho đối tượng là thuộc tính công khai mà người dùng đã đặt cho đối tượngbaseObject.company = "Microsoft";
Trong đối tượng này
4, các thuộc tính có thể đếm được sẽ làbaseObject.company = "Microsoft";
5 vàbaseObject.company = "Microsoft";
6. Vì vậy, nếu chúng ta sử dụng toán tử trải rộng trên đối tượng này, chúng ta có thể tạo một phiên bản mới của đối tượng nàybaseObject.company = "Microsoft";
________số 8
Tuy nhiên điều này sẽ thất bại. Chúng ta sẽ cần tạo một đối tượng mới của các thuộc tính có thể đếm được vì các thuộc tính có thể đếm được không phải là một kiểu dữ liệu. Bởi vì khi đó chúng ta có một thể hiện khác, chúng ta cũng có thể thêm các thuộc tính một cách dễ dàng mà không làm thay đổi thể hiện ban đầu của đối tượng
const newPerson = { ...person };
Nhưng thay vì gán giá trị của thuộc tính một dòng sau đó, chúng ta thực sự có thể tạo đối tượng và cũng xác định thuộc tính được inlined
0const addedPropertyObject = {
const { age, ...deletedPropertyObject } = baseObject;
Xóa một thuộc tính của một đối tượng bằng ES6 JavaScript
Để xóa một thuộc tính của một đối tượng trong ES6 JavaScript, chúng ta cần hiểu khái niệm phá hủy đối tượng và trải rộng đối tượng. Trải rộng đối tượng đã được giải thích trong chương trước rồi
Để phá hủy, chúng ta sẽ bắt đầu với một vấn đề đơn giản. Chúng tôi có một đối tượng được gọi là
4 có hai thuộc tính được gọi làbaseObject.company = "Microsoft";
5 vàbaseObject.company = "Microsoft";
6. Cả hai đều chứa một chuỗi đơn giản nhưng cũng có thể chứa bất kỳ loại dữ liệu nào trong JavaScript như Mảng, Tập hợp, Số hoặc thậm chí một đối tượng khácbaseObject.company = "Microsoft";
Để truy cập các thuộc tính ngay bây giờ, chúng tôi cần truy cập
0 hoặcconst newPerson = ...person;
1, nhưng đối với một số chức năng sử dụng các thuộc tính này nhiều lần, chúng tôi muốn giải mã mã nguồn một chút và chỉ sử dụngconst newPerson = ...person;
5 hoặcbaseObject.company = "Microsoft";
6. Trong JavaScript truyền thống, điều này sẽ giống như đoạn mã sau đây cho thấybaseObject.company = "Microsoft";
8const addedPropertyObject = {
const { age, ...deletedPropertyObject } = baseObject;
Nhưng điều tương tự cũng có thể đạt được với việc hủy đối tượng như ví dụ mã tiếp theo cho thấy
9const addedPropertyObject = {
const { age, ...deletedPropertyObject } = baseObject;
Chúng ta có thể kết hợp hành vi này với toán tử trải rộng cho các đối tượng. Hãy để chúng tôi tưởng tượng lại đối tượng cơ sở của chúng tôi
4. Nó có hai thuộc tínhbaseObject.company = "Microsoft";
5 vàbaseObject.company = "Microsoft";
6. Khi chúng ta hủy cấu trúc thuộc tínhbaseObject.company = "Microsoft";
5 ra khỏi đối tượng, đối tượng chỉ còn lạibaseObject.company = "Microsoft";
6. Thuộc tính đối tượng này là thuộc tính bên trái của đối tượng. Nó là tài sản đếm được duy nhất còn lại. Nếu đối tượng chứa các thuộc tính khác nhưbaseObject.company = "Microsoft";
9 thì vô số thuộc tính sẽ bao gồmconst newPerson = ...person;
6 vàbaseObject.company = "Microsoft";
9. Chúng ta có thể sử dụng hành vi này để tạo một bản sao của một đối tượng "không có" thuộc tính bị hủy cấu trúcconst newPerson = ...person;
8baseObject.company = "Microsoft";
Trong trường hợp này, chúng tôi đã bỏ qua các thuộc tính
5 vàbaseObject.company = "Microsoft";
6 bằng cách phá hủy chúng. Phần còn lại của các thuộc tính liệt kê được "nhân bản" vào thể hiện đối tượng mớibaseObject.company = "Microsoft";
4. Một ưu điểm lớn của phương pháp này là vẫn có thể truy cậpconst newPerson = { ...person };
4 sau khi "xóa" các thuộc tính khỏi đối tượng, nhưng chúng ta cũng có thể sử dụng đối tượngbaseObject.company = "Microsoft";
4 như bình thường. Đây được gọi là chức năng thuần túy vì ứng dụng của "chức năng xóa" không bao giờ thay đổi các đối tượng ban đầuconst newPerson = { ...person };
Thêm một thuộc tính vào một đối tượng với ES5 JavaScript
Chức năng cơ bản được cung cấp trong chính JavaScript. Bạn có thể mở rộng thuộc tính bằng cách gọi
7 trong đóconst newPerson = { ...person };
8 là thuộc tính. Điều đặc biệt là các thuộc tính này cũng có thể được thiết lập và sẽ thay đổi đối tượng ban đầu, điều đó có nghĩa là chức năng ở đây không thực sự thuần túyconst newPerson = { ...person };
baseObject.company = "Microsoft";
Điều này sẽ dẫn đến tình trạng chúng ta không thể truy cập vào
1 cơ bản chỉ với thuộc tínhbaseObject.company = "Microsoft";
5,baseObject.company = "Microsoft";
6 vàbaseObject.company = "Microsoft";
9. Đối với bước này, chúng ta sẽ cần sao chép đối tượng, điều này cũng có thể thực hiện được trong ES5const newPerson = ...person;
1baseObject.company = "Microsoft";
Xóa thuộc tính của một đối tượng bằng JavaScript ES5
Chức năng xóa thuộc tính cũng được cung cấp trong ES5 JavaScript. Từ khóa để sử dụng là
03 và có thể được sử dụng tương tự như việc thêm thuộc tính trông như thế nàoconst addedPropertyObject = {
const { age, ...deletedPropertyObject } = baseObject;
Một lần nữa, vấn đề với cách tiếp cận này là đối tượng ban đầu được điều chỉnh. Điều này có thể dẫn đến các tác dụng phụ và đó là lý do tại sao kỹ sư phần mềm nên sao chép đối tượng trước rồi xóa thuộc tính khỏi đối tượng được sao chép
1baseObject.company = "Microsoft";
Kết luận và hơn thế nữa
Chúng tôi có thể nói rằng các kỹ sư phần mềm luôn thích sao chép theo cách ES6 vì nó có ít tác dụng phụ nhất và trông ít lộn xộn nhất. Trong thế giới ES5, một kỹ sư phần mềm phải đảm bảo sao chép đối tượng trước khi thực sự thực hiện một thao tác để tuân thủ hoàn toàn các chức năng thuần túy. Tất nhiên, quá trình này có thể bị hỏng, nhưng nó có thể dẫn đến lỗi. Một phương pháp thú vị khác là cách thêm thuộc tính có điều kiện vào Đối tượng trong JavaScript. Tôi cũng đã viết một bài báo về điều đó, bạn có thể theo dõi tại đây. Thêm thuộc tính đối tượng một cách có điều kiện với EcmaScript 6 [ES6]. Nếu bạn quan tâm hơn đến việc phá hủy đối tượng, bạn cũng có thể tìm thấy bài viết Tham số chức năng trong JavaScript trên blog của tôi