Các đối tượng có đúng trong JavaScript không?
Gần như mọi thứ trong JavaScript là một đối tượng trừ sáu thứ không phải là đối tượng — // syntax - Object.create(prototype[, propertiesObject]) 6,// syntax - Object.create(prototype[, propertiesObject]) 7, chuỗi, số, boolean và ký hiệu. Chúng được gọi là giá trị nguyên thủy hoặc kiểu nguyên thủy Show
Bất cứ thứ gì không phải là giá trị nguyên thủy đều là Đối tượng. Điều đó bao gồm các mảng, hàm, hàm tạo và chính các đối tượng Đúng. Hàm và mảng cũng là đối tượng như chúng ta sẽ thấy ở phần sau của bài viết Các đối tượng Về mặt khái niệm, các Đối tượng giống nhau trong tất cả các ngôn ngữ lập trình tôi. e chúng đại diện cho những thứ trong thế giới thực mà chúng ta muốn đại diện bên trong chương trình của mình bằng các đặc điểm/thuộc tính và phương thức Ví dụ: nếu đối tượng của bạn là sinh viên, nó sẽ có các thuộc tính như tên, tuổi, địa chỉ, id, v.v. và các phương thức như // syntax - Object.create(prototype[, propertiesObject]) 8, // syntax - Object.create(prototype[, propertiesObject]) 9 v.v.Trong JavaScript, hãy nghĩ về một đối tượng dưới dạng một danh sách chứa các mục và mỗi mục (một thuộc tính hoặc một phương thức) trong danh sách được lưu trữ bởi một cặp khóa-giá trị trong bộ nhớ dưới dạng tham chiếu Hãy xem một ví dụ đối tượng const firstObj = { const newObj = new Object(); 0 là một đối tượng có 2 thuộc tính 1 và tuổi và giá trị là const newObj = new Object(); 1 và const newObj = new Object(); 2Các đối tượng JavaScript hơi khác nhau theo cách chúng được tạo. Không có yêu cầu đối với một const newObj = new Object(); 3 như vậy và có thể được khai báo bằng cách sử dụng ký hiệu chữTạo đối tượngChúng ta có thể tạo các đối tượng theo nhiều cách trong javascript, hãy xem xét từng cách trong số chúng
// syntax - Object.create(prototype[, propertiesObject]) 0
2. const newObj = new Object(); 9. phương thức tạo một đối tượng mới với nguyên mẫu và thuộc tính được chỉ định của đối tượng cũ
// syntax - Object.create(prototype[, propertiesObject]) Dưới đây là đầu ra của đối tượng // syntax - Object.create(prototype[, propertiesObject]) 61Đối tượng trong JavascriptBây giờ chúng ta có thể thêm các thuộc tính và dữ liệu mới vào đối tượng // syntax - Object.create(prototype[, propertiesObject]) 62 bằng phương pháp chúng ta đang học ở đây
3. // syntax - Object.create(prototype[, propertiesObject]) 69. Việc sử dụng // syntax - Object.create(prototype[, propertiesObject]) 70constructor kết hợp với từ khóa “// syntax - Object.create(prototype[, propertiesObject]) 71” cho phép chúng ta khởi tạo các đối tượng mớiHãy xem qua một ví dụ const newObj = new Object(); Tuy nhiên, phương pháp sử dụng // syntax - Object.create(prototype[, propertiesObject]) 72 ở trên không phù hợp lắm với các chương trình yêu cầu tạo nhiều đối tượng cùng loại, vì nó sẽ liên quan đến việc viết lặp đi lặp lại các dòng mã trên cho từng đối tượng đóĐể đối phó với vấn đề này, chúng ta có thể sử dụng phương pháp tiếp theo 4. // syntax - Object.create(prototype[, propertiesObject]) 73. Trình xây dựng có thể hữu ích khi chúng ta cần một cách để tạo một “loại” đối tượng có thể được sử dụng nhiều lần mà không cần phải xác định lại đối tượng mỗi lần và điều này có thể đạt được bằng cách sử dụng hàm Trình xây dựng đối tượngHãy xem qua một ví dụ // syntax - Object.create(prototype[, propertiesObject]) 6Chúng tôi đã tạo hai đối tượng có cùng thuộc tính nhưng có giá trị khác nhau 5. // syntax - Object.create(prototype[, propertiesObject]) 74. đây là một phương pháp khác để tạo một đối tượng mới từ các đối tượng khác
Nó sao chép các giá trị của tất cả các thuộc tính riêng có thể đếm được từ một hoặc nhiều đối tượng nguồn sang đối tượng đích. Nó sẽ trả về đối tượng mục tiêu. Hãy hiểu bằng một ví dụ // syntax - Object.create(prototype[, propertiesObject]) 7Có rất nhiều trường hợp sử dụng cho // syntax - Object.create(prototype[, propertiesObject]) 74 như Nhân bản đối tượng, Hợp nhất các đối tượng, v.v.6. // syntax - Object.create(prototype[, propertiesObject]) 76. Phương thức chuyển đổi danh sách các cặp khóa-giá trị thành một đối tượng. Hãy xem qua một ví dụ// syntax - Object.create(prototype[, propertiesObject]) 7
Cách thêm/cập nhật và xóa thuộc tính của một đối tượngCác thuộc tính cho một đối tượng có thể được thêm thông qua ký hiệu dấu chấm hoặc dấu ngoặc như đã thảo luận trước đó. Hãy xem xét một ví dụ // syntax - Object.create(prototype[, propertiesObject]) 9Ở đây, // syntax - Object.create(prototype[, propertiesObject]) 78 và // syntax - Object.create(prototype[, propertiesObject]) 79 là các thuộc tính của đối tượngMột đối tượng chỉ có thể chứa một khóa duy nhất với một giá trị. Chúng tôi không thể có một khóa duy nhất có hai giá trị khác nhau Tên thuộc tính có thể là một chuỗi hoặc một số hoặc ký tự đặc biệt hoặc thuộc tính động, nhưng nếu tên thuộc tính không phải là một chuỗi thì nó phải được truy cập bằng ký hiệu ngoặc. Vì vậy, nếu chúng ta cần truy cập thuộc tính // syntax - Object.create(prototype[, propertiesObject]) 70 trong ví dụ trên, chúng ta có thể thực hiện // syntax - Object.create(prototype[, propertiesObject]) 71 nhưng // syntax - Object.create(prototype[, propertiesObject]) 72 sẽ trả về lỗi cú pháp. Tuy nhiên, trường hợp tài sản tôi. e // syntax - Object.create(prototype[, propertiesObject]) 73 hoặc // syntax - Object.create(prototype[, propertiesObject]) 74 sẽ hoạt độngconst firstObj = { 7Để cập nhật một thuộc tính, chúng ta có thể sử dụng lại cả hai loại ký hiệu trên. Nếu chúng tôi thêm giá trị vào các thuộc tính đã được tạo thì giá trị được cập nhật khác được tạo const firstObj = { 8Ở trên sẽ cập nhật giá trị thành phố từ // syntax - Object.create(prototype[, propertiesObject]) 75 đến // syntax - Object.create(prototype[, propertiesObject]) 76Chúng ta cũng có thể tạo và cập nhật các thuộc tính cho một đối tượng thông qua các phương thức hàm // syntax - Object.create(prototype[, propertiesObject]) 70 như // syntax - Object.create(prototype[, propertiesObject]) 78 hoặc // syntax - Object.create(prototype[, propertiesObject]) 79// syntax - Object.create(prototype[, propertiesObject]) 00Để xóa một thuộc tính của một đối tượng, chúng ta có thể sử dụng từ khóa // syntax - Object.create(prototype[, propertiesObject]) 90 và chúng ta có thể sử dụng cả hai ký hiệu để làm như vậy// syntax - Object.create(prototype[, propertiesObject]) 01Giá trị trả về // syntax - Object.create(prototype[, propertiesObject]) 90 là // syntax - Object.create(prototype[, propertiesObject]) 92 nếu thuộc tính đã được xóa thành công. Nếu không, nó sẽ là // syntax - Object.create(prototype[, propertiesObject]) 93
Làm cách nào để lặp lại các thuộc tính đối tượng?Sẽ có một tình huống trong khi mã hóa thực tế mà chúng tôi muốn truy cập tất cả các cặp khóa-giá trị đối tượng Sử dụng Vòng lặp — vòng lặp for in và for of Trong trường hợp for in, nó lặp lại một đối tượng và trả về từng thuộc tính một // syntax - Object.create(prototype[, propertiesObject]) 02Khóa sẽ có tất cả các thuộc tính từng cái một và // syntax - Object.create(prototype[, propertiesObject]) 94 sẽ trả về giá trị. Vòng lặp for cũng lặp qua chuỗi nguyên mẫu và cũng sẽ trả về các khóa chính, vì vậy đừng ngạc nhiên nếu bạn thấy nhiều khóa hơn. Để tránh nhìn thấy nhiều khóa hơn, chúng tôi có thể thực hiện kiểm tra ____395 để chỉ nhận các khóa đối tượng hiện tạiTrong trường hợp for of, nó lặp đi lặp lại lặp đi lặp lại trên các đối tượng có thể lặp lại. Để đọc thêm tại đây Có nhiều phương thức khác nhau trong hàm Đối tượng giúp truy cập các thuộc tính và giá trị của đối tượng, không phải chuỗi nguyên mẫu
// syntax - Object.create(prototype[, propertiesObject]) 032. // syntax - Object.create(prototype[, propertiesObject]) 98. Trả về một mảng các giá trị// syntax - Object.create(prototype[, propertiesObject]) 043. // syntax - Object.create(prototype[, propertiesObject]) 99. Trả về một mảng gồm const firstObj = { 70 cặp// syntax - Object.create(prototype[, propertiesObject]) 05Từ những gì chúng ta thấy ở trên, thứ tự xuất hiện của các thuộc tính không cố định trong một đối tượng Cách kiểm tra sự tồn tại của các thuộc tính trong một đối tượngCó ba cách để kiểm tra thuộc tính có tồn tại trong một đối tượng hay không
// syntax - Object.create(prototype[, propertiesObject]) 06
2. Sử dụng toán tử in — Toán tử const firstObj = { 76 trả về // syntax - Object.create(prototype[, propertiesObject]) 92 nếu thuộc tính đã chỉ định nằm trong đối tượng đã chỉ định hoặc chuỗi nguyên mẫu của nó i. e bên trong cha mẹ của nó// syntax - Object.create(prototype[, propertiesObject]) 07
3. Sử dụng chức năng tùy chỉnhCó nhiều cách khác nhau để kiểm tra xem một thuộc tính có tồn tại hay không thông qua một phương thức tùy chỉnh. Một trong số đó là thông qua const firstObj = { 80Ví dụ// syntax - Object.create(prototype[, propertiesObject]) 08Bình luận xuống bên dưới phương pháp tùy chỉnh của bạn để làm điều tương tự 😃 Sao chép theo tham chiếu/chia sẻ và sao chép theo giá trị là gì và nó áp dụng như thế nào cho đối tượng?Sự khác biệt là, theo giá trị, chúng tôi muốn nói rằng việc cấp phát bộ nhớ mới được thực hiện mỗi khi có thứ gì đó được tạo trong khi trong trường hợp tham chiếu, chúng tôi trỏ đến không gian bộ nhớ đã được tạo Trong ngữ cảnh của javascript, tất cả các kiểu dữ liệu nguyên thủy được cấp phát bộ nhớ thông qua phương thức giá trị và đối với một đối tượng, cả hai đều là bản sao theo giá trị hoặc tham chiếu tùy thuộc vào việc triển khai // syntax - Object.create(prototype[, propertiesObject]) 09Bản sao/nhân bản đối tượng nông và sâu là gì?Sự khác biệt cốt lõi giữa bản sao nông và sâu là cách các thuộc tính được sao chép sang đối tượng mới Trong Bản sao nông, đối tượng mới chia sẻ dữ liệu với đối tượng cũ hơn i. e trong trường hợp ví dụ trên sử dụng const firstObj = { 81 tạo một bản sao nông const firstObj = { 82 của đối tượng const firstObj = { 83. Vì vậy, chuyển qua tham chiếu là một bản sao nông trong hầu hết các trường hợpNgoài ra, Một bản sao nông sẽ sao chép các thuộc tính cấp cao nhất, nhưng đối tượng lồng nhau được chia sẻ giữa bản gốc (nguồn) và bản sao (đích) Một cách khác để sao chép nông là sử dụng // syntax - Object.create(prototype[, propertiesObject]) 74 được thảo luận khi bắt đầu. Hãy xem ví dụ// syntax - Object.create(prototype[, propertiesObject]) 0Như chúng ta có thể thấy ở trên const firstObj = { 85 đó là một cạm bẫy của // syntax - Object.create(prototype[, propertiesObject]) 74. const firstObj = { 87 chỉ tạo các bản sao nông. Cả const firstObj = { 88 và const firstObj = { 89 đều có chung tham chiếu đến đối tượng vì các bản sao riêng lẻ không được tạo, thay vào đó, một tham chiếu đến đối tượng đã được sao chépTrong Deep copy, đối tượng mới sẽ có tập hợp các cặp khóa-giá trị riêng (có cùng giá trị với đối tượng gốc) thay vì chia sẻ Hãy xem một số cách để thực hiện một bản sao sâu
// syntax - Object.create(prototype[, propertiesObject]) 1Vấn đề ở trên là chúng ta không thể sao chép các hàm hoặc khóa đối tượng do người dùng xác định có giá trị là // syntax - Object.create(prototype[, propertiesObject]) 001 hoặc // syntax - Object.create(prototype[, propertiesObject]) 002// syntax - Object.create(prototype[, propertiesObject]) 2Ngoài ra, phương pháp này không hoạt động đối với các đối tượng hình tròn
// syntax - Object.create(prototype[, propertiesObject]) 3Ở trên sẽ đưa ra một lỗi nói // syntax - Object.create(prototype[, propertiesObject]) 0032. Sử dụng toán tử trải rộng ES6 — // syntax - Object.create(prototype[, propertiesObject]) 4Tuy nhiên, // syntax - Object.create(prototype[, propertiesObject]) 004 vẫn được sao chép nông cạnLàm thế nào để so sánh hai đối tượng?Các toán tử đẳng thức // syntax - Object.create(prototype[, propertiesObject]) 005 và đẳng thức nghiêm ngặt // syntax - Object.create(prototype[, propertiesObject]) 006 cho các đối tượng hoạt động giống hệt nhau. e hai đối tượng chỉ bằng nhau nếu chúng chia sẻ cùng một tham chiếu đến bộ nhớChẳng hạn, nếu hai biến tham chiếu đến cùng một đối tượng thì chúng bằng nhau // syntax - Object.create(prototype[, propertiesObject]) 5Vui lòng cân nhắc nhập email của bạn tại đây nếu bạn muốn được thêm vào danh sách email của tôi và theo dõi tôi trên phương tiện để đọc thêm bài viết về javascript và trên Github để xem mã điên rồ của tôi. Nếu có gì chưa rõ hoặc muốn chỉ ra điều gì, hãy comment xuống bên dưới Các đối tượng có phải là giá trị trong JavaScript không?Đối tượng JavaScript là nơi chứa các giá trị được đặt tên gọi là thuộc tính .
Đối tượng rỗng là thật hay giả?Chỉ có bảy giá trị là sai trong JavaScript và các đối tượng trống không phải là một trong số chúng . Đối tượng rỗng là đối tượng không có thuộc tính riêng. Bạn có thể sử dụng đối tượng.
Làm cách nào bạn có thể biết JavaScript là đúng hay sai?Cách kiểm tra xem một biến có sai trong JavaScript hay không . Sử dụng toán tử đẳng thức nghiêm ngặt (===) để kiểm tra xem một biến có bằng false hay không, e. g. myVar === sai Toán tử đẳng thức nghiêm ngặt (===) sẽ trả về true nếu biến bằng false, ngược lại, nó sẽ trả về false |