Mảng bất biến JavaScript
Trong JavaScript, chúng tôi sử dụng 6 để lưu trữ nhiều giá trị dưới dạng cấu trúc dữ liệu phức tạp. Bạn tạo một đối tượng bằng một cặp dấu ngoặc nhọn 7 Show Một đối tượng có thể có một hoặc nhiều thuộc tính. Mỗi thuộc tính là một cặp khóa-giá trị được phân tách bằng dấu 8. Khóa phải là một chuỗi hoặc loại biểu tượng JavaScript. Giá trị có thể thuộc bất kỳ loại nào, kể cả đối tượng khácVới lời giải thích về một đối tượng, hãy tạo một đối tượng để xem nó hoạt động như thế nào
Ở đây chúng tôi đã tạo một đối tượng có hai thuộc tính (tên, tuổi) và các giá trị tương ứng của chúng. Chúng tôi đã tạo một biến có tên là 9 với từ khóa 0 và chúng tôi đã gán đối tượng cho biến đó làm giá trịTheo mặc định, các đối tượng là 1. Điều này có nghĩa là sau khi chúng được tạo, bạn có thể thêm thuộc tính mới cho chúng, sửa đổi giá trị của thuộc tính hiện có hoặc xóa thuộc tínhTrong những năm đầu lập trình, tôi thấy các thuật ngữ 1 và 3 rất khó hiểu. Hãy để tôi thử giải thích nó bằng tiếng Anh đơn giảnCó thể thay đổi là thứ bạn có thể thay đổi. Bất biến chỉ là điều ngược lại với điều đó. Vì vậy, 4 là khả năng thay đổi theo thời gian. 5 có nghĩa là một cái gì đó không thay đổi theo thời gianCó thể có những tình huống mà bạn không muốn một đối tượng thay đổi theo chương trình. Vì vậy, bạn sẽ muốn làm cho nó bất biến Khi một đối tượng là bất biến, bạn không thể thêm một thuộc tính mới vào nó, sửa đổi nó hoặc xóa một thuộc tính hiện có. Thậm chí không có cách nào để mở rộng nó Đây là ý nghĩa của một 6 mà chúng ta sẽ tìm hiểu, thực hành và hiểu trong bài viết nàyTôi đã thảo luận về các vật thể bị đóng băng trong một chủ đề Twitter gần đây. Xin vui lòng có một cái nhìn. Bài viết này sẽ mở rộng về chủ đề với nhiều chi tiết và ví dụ hơn Cách tạo đối tượng đóng băng trong JavaScript Bạn có thể đóng băng (làm cho không thể thay đổi) một đối tượng bằng cách sử dụng chức năng 7. Đối tượng được truyền cho phương thức 8 sẽ trở thành bất biến. Phương thức 9 cũng trả về cùng một đối tượngHãy tạo một đối tượng của các ngôn ngữ được hỗ trợ
Nếu bạn không muốn đối tượng này thay đổi sau khi nó được tạo, chỉ cần sử dụng phương thức 8 để biến nó thành bất biến
Bây giờ, hãy thử thay đổi một trong hai đối tượng và xem điều gì sẽ xảy ra
Bạn sẽ gặp lỗi khi thử thay đổi một đối tượng cố định (đối tượng không thay đổi) trong môi trường JavaScript 1Chờ đã – từ khóa 0 không làm điều tương tự sao?À, không hẳn. Từ khóa 0 và 4 không giống nhau. Khi bạn gán một đối tượng cho một biến được tạo bằng từ khóa const, bạn không thể gán lại giá trị khác. Tuy nhiên, bạn có thể sửa đổi các đối tượng được gán theo bất kỳ cách nào bạn muốnHãy hiểu sự khác biệt với một ví dụ. Lần này, chúng tôi sẽ lấy cùng một đối tượng 5 nhưng sẽ không đóng băng nó
Bây giờ bạn có thể sửa đổi nó như thế này
Bây giờ đối tượng 5 được thay đổi như sauVì vậy, thay đổi này được cho phép. Nhưng nếu bạn cố gắng gán một đối tượng mới cho biến 5
Bạn sẽ nhận được lỗi này Tôi hy vọng sự khác biệt đã rõ ràng – đây cũng là một câu hỏi phỏng vấn thường gặp Tại sao chúng ta cần các đối tượng cố định trong JavaScript?Một lần nữa, chúng ta cần các đối tượng đóng băng khi chúng ta cần tính bất biến. Trong lập trình hướng đối tượng, thường có các API mà chúng ta không thể mở rộng hoặc sửa đổi bên ngoài ngữ cảnh hiện tại Bạn có nhớ từ khóa 8 trong Java không? . Tính bất biến là một khái niệm cần thiết để sử dụng trong lập trình chức năngTính bất biến cũng thường quan trọng trong ngôn ngữ lập trình JavaScript. Bạn có thể muốn một đối tượng cấu hình là bất biến, một bộ ngôn ngữ được hỗ trợ cố định cho các ứng dụng của bạn hoặc bất kỳ thứ gì khác mà bạn không muốn thay đổi trong thời gian chạy Bạn cũng có thể đóng băng một mảngTrong JavaScript, 9 là các đối tượng ngầm. Vì vậy, bạn cũng có thể áp dụng 4vào mảng để biến chúng thành bất biếnHãy lấy một loạt các giác quan của con người
Bây giờ chúng ta có thể làm cho nó trở nên bất biến như thế này
Bây giờ, hãy thử đẩy một phần tử vào mảng đó. Điều đó là không thể
Đầu ra sẽ là lỗi sau Cố gắng xóa một phần tử khỏi mảng 0Bạn sẽ nhận được lỗi này Vui lòng thông báo lỗi trong cả hai trường hợp. Nó nói rõ ràng, thuộc tính thêm và xóa không được phép vì đối tượng cơ bản không thể mở rộng Đóng băng đối tượng nôngMột thuộc tính đối tượng JavaScript có thể có một đối tượng khác làm giá trị của nó. Nó có thể đi đến một cấp độ sâu hơn xuống Khi chúng ta đóng băng một vật thể, đó là đóng băng 1. Điều này có nghĩa là chỉ các thuộc tính cấp cao nhất bị đóng băng. Nếu bất kỳ giá trị nào của thuộc tính là một đối tượng khác, thì đối tượng bên trong đó không bị đóng băng. Bạn vẫn có thể thay đổi nóHãy hiểu điều này với ví dụ về một đối tượng cấu hình 1Đối tượng cấu hình có các thuộc tính như db, máy chủ, mật khẩu và cổng với các giá trị kiểu chuỗi đơn giản. Tuy nhiên, thuộc tính quản trị có một đối tượng là giá trị. Bây giờ, hãy đóng băng đối tượng cấu hình 2Bây giờ, hãy thử thay đổi tên db 3Nó không được phép vì đối tượng bị đóng băng. Tuy nhiên, bạn có thể làm điều này 4Ở đây chúng tôi đã thay đổi thuộc tính của đối tượng lồng nhau. Vì đối tượng đóng băng có bản chất nông, nó sẽ không ngăn chúng ta thay đổi đối tượng lồng nhau. Vì vậy, nếu bạn đăng nhập đối tượng vào bảng điều khiển, đây là những gì bạn sẽ nhận được Cách đóng băng sâu một đối tượng trong JavaScriptNhưng làm cách nào để đóng băng sâu một đối tượng nếu bạn cần hoặc muốn? Trong lập trình, đệ quy là một phương pháp sử dụng một thủ tục, hàm hoặc thuật toán để gọi chính nó. Hãy xem bài viết này để hiểu sâu hơn Vì vậy, chúng ta có thể lặp qua mọi thuộc tính và áp dụng đệ quy phương thức đóng băng cho mọi thứ. Nó sẽ đảm bảo rằng các đối tượng lồng nhau cũng bị đóng băng Để làm điều đó, bạn có thể viết một chức năng đơn giản như thế này 5 Đâu là sự khác biệt giữa freeze(), seal() và preventExtensions()?với đối tượng. đóng băng chúng tôi đạt được sự bất biến đầy đủ. Nhưng có hai phương pháp khác cung cấp tính bất biến của đối tượng, chỉ một phần
Đây là một bảng để so sánh chúng CreateReadUpdateDeletefreeze❌✔️❌❌seal❌✔️✔️❌ngăn chặn Tiện ích mở rộng❌✔️✔️✔️Cách hủy đóng băng đối tượng bị đóng băngKhông có cách đơn giản nào để giải phóng một đối tượng bị đóng băng trong JavaScript Bạn có thể mô phỏng quá trình giải phóng băng bằng cách tạo một bản sao của đối tượng duy trì nguyên mẫu Đây là gói NPM thực hiện tương tự với bản sao nông Tóm tắtĐể tóm tắt,
Đó là tất cả cho bây giờ. Tôi hy vọng bạn thấy bài viết này sâu sắc và nó giúp bạn hiểu rõ hơn về tính bất biến của đối tượng Kết nối nào. Bạn sẽ thấy tôi hoạt động trên Twitter (@tapasadhikary). Hãy theo dõi. Tôi cũng đã bắt đầu chia sẻ kiến thức bằng kênh YouTube của mình, vì vậy bạn cũng có thể xem qua Bạn cũng có thể thích những bài viết này
QUẢNG CÁO QUẢNG CÁO QUẢNG CÁO QUẢNG CÁO QUẢNG CÁO QUẢNG CÁO QUẢNG CÁO QUẢNG CÁO QUẢNG CÁO nhà văn. YouTuber. Người sáng tạo. Người hướng dẫn Nếu bạn đọc đến đây, hãy tweet cho tác giả để cho họ thấy bạn quan tâm. Tweet một lời cảm ơn Học cách viết mã miễn phí. Chương trình giảng dạy mã nguồn mở của freeCodeCamp đã giúp hơn 40.000 người có được việc làm với tư cách là nhà phát triển. Bắt đầu Mảng có bất biến trong JavaScript không?Trong JavaScript, các đối tượng và mảng có thể thay đổi theo mặc định , nhưng các giá trị nguyên thủy thì không — một khi giá trị nguyên thủy được tạo, nó không thể thay đổi được .
Làm cách nào để không thay đổi mảng trong JavaScript?Chúng ta có thể ngăn chặn sự thay đổi của các đối tượng và mảng bằng cách sử dụng Đối tượng. Hàm JavaScript đóng băng() . Chúng tôi chuyển đối tượng hoặc mảng mong muốn làm đối số cho hàm này, điều này sau đó sẽ ngăn mọi thay đổi đối với dữ liệu của đối tượng hoặc mảng.
Làm cách nào để cập nhật mảng không thay đổi trong JavaScript?Mảng và đối tượng bất biến trong vanilla JS . // Tạo một biến let age1 = 42; . nhật ký (tuổi1); // Tạo một bản sao không thay đổi let evenMoreSandwiches = Array. . // Tạo một bản sao bất biến let evenMoreLunch = Object Phương thức mảng nào là bất biến?Hoạt động mảng bất biến . Xô. Đẩy là thao tác thêm mục mới vào đầu mảng. . Bỏ dịch chuyển. Unshift là một hoạt động tương tự như đẩy. . Nhạc pop. . Sự thay đổi. . Loại bỏ và chèn các mục. . Sắp xếp và đảo ngược. . Sửa đổi và/hoặc thêm thuộc tính. . Xóa một thuộc tính |