Làm thế nào để bạn tham chiếu một đối tượng trong javascript?

Đối tượng JavaScript là loại dữ liệu quan trọng nhất và tạo thành các khối xây dựng cho JavaScript hiện đại. Lớp “Đối tượng” đại diện cho các kiểu dữ liệu JavaScript. Các đối tượng khá khác với các kiểu dữ liệu nguyên thủy của JavaScript (Số, Chuỗi, Boolean, null, không xác định và ký hiệu). Nó được sử dụng để lưu trữ các loại bộ sưu tập khóa và các thực thể phức tạp khác nhau. Nó có thể được tạo bằng cách sử dụng phương thức Object() hoặc bằng cách sử dụng bộ khởi tạo đối tượng/cú pháp bằng chữ

Psssst. BOOTCAMP PHÁT TRIỂN WEB 2023 sẽ bắt đầu vào ngày 01 THÁNG 2 NĂM 2023. Tham gia danh sách chờ, giữ chỗ trong khóa học thuần tập kéo dài 10 tuần của tôi và tìm hiểu các nguyên tắc cơ bản, HTML, CSS, JS, Tailwind, React, Next. jsvà hơn thế nữa. ✨

Bài đăng này ghi lại tất cả các phương thức và thuộc tính đối tượng tích hợp sẵn của

const person = {}
typeof person //object
37

Bất kỳ giá trị nào không thuộc kiểu nguyên thủy (chuỗi, số, boolean, ký hiệu, null hoặc không xác định) đều là một đối tượng. Ngay cả các mảng hoặc các chức năng, dưới vỏ bọc, các đối tượng

Giá trị

const person = Object()
typeof person //object
0 có thể được tạo bằng cú pháp đối tượng bằng chữ

const person = {}
typeof person //object

sử dụng hàm toàn cầu

const person = {}
typeof person //object
37

const person = Object()
typeof person //object

hoặc sử dụng hàm tạo đối tượng

const person = new Object()
typeof person //object

Một cú pháp khác là sử dụng

const person = Object()
typeof person //object
2

const car = Object.create()

Bạn có thể khởi tạo đối tượng với các thuộc tính bằng cú pháp này

const person = {
  age: 36,
  name: 'Flavio',
  speak: () => {
    //speak
  }
}

const person = Object({
  age: 36,
  name: 'Flavio',
  speak: () => {
    //speak
  }
})

const person = new Object({
  age: 36,
  name: 'Flavio',
  speak: () => {
    //speak
  }
})

Tất cả những cách đó về cơ bản là tương đương nhau vì tất cả chúng đều cho phép bạn truy cập vào các phương pháp mà tôi sẽ liệt kê bên dưới

Bạn cũng có thể khởi tạo một đối tượng bằng cách sử dụng từ khóa

const person = Object()
typeof person //object
3 trước một hàm có chữ in hoa. Hàm này đóng vai trò là hàm tạo cho đối tượng đó. Trong đó, chúng ta có thể khởi tạo các đối số mà chúng ta nhận được dưới dạng tham số, để thiết lập trạng thái ban đầu của đối tượng

________số 8

Chúng tôi khởi tạo một đối tượng mới bằng cách sử dụng

const myCar = new Car('Ford', 'Fiesta')
myCar.brand //'Ford'
myCar.model //'Fiesta'

Đối tượng có thuộc tính. Mỗi tài sản có một tên và một giá trị

Bạn có thể nghĩ rằng một đối tượng về cơ bản là một bản đồ, hoặc từ điển, cấu trúc dữ liệu, và bạn đã đúng

Giá trị của một thuộc tính có thể thuộc bất kỳ loại nào, có nghĩa là nó thậm chí có thể là một đối tượng, vì các đối tượng có thể lồng các đối tượng khác

Khi một giá trị thuộc tính là một hàm, chúng ta gọi nó là phương thức

Các đối tượng có thể kế thừa các thuộc tính của chúng từ các đối tượng khác và chúng ta sẽ thấy chi tiết điều này khi chúng ta nói về tính kế thừa

Các đối tượng luôn được truyền theo tham chiếu

Nếu bạn gán một biến có cùng giá trị với biến khác, nếu đó là kiểu nguyên thủy như số hoặc chuỗi, thì chúng sẽ được truyền theo giá trị

const person = {}
typeof person //object
0
const person = {}
typeof person //object
1

Thuộc tính đối tượng tích hợp

Đối tượng Object có 2 thuộc tính

  • const person = Object()
    typeof person //object
    4 luôn bằng
    const person = Object()
    typeof person //object
    5
  • const person = Object()
    typeof person //object
    6 điều này trỏ đến đối tượng nguyên mẫu Đối tượng. đối tượng mà tất cả các đối tượng khác kế thừa từ. Kiểm tra bài kế thừa nguyên mẫu để biết thêm

phương pháp tĩnh

Chúng tôi chia các phương thức thành các phương thức tĩnh và các phương thức thể hiện. Các phương thức tĩnh được gọi trực tiếp trên

const person = {}
typeof person //object
37. Các phương thức sơ thẩm được gọi trên một thể hiện đối tượng (đối tượng ______08)

Các phương thức tĩnh là một cách tuyệt vời để cung cấp một không gian tên cho các hàm hoạt động trong cùng một không gian. Bằng cách này, chúng ta không có các chức năng toàn cầu xung quanh, nhưng tất cả đều được đặt tên theo đối tượng toàn cầu

const person = {}
typeof person //object
37

Đây là những ghi chú dựa trên Khóa học video JavaScript dành cho người mới bắt đầu của tôi. Đó là một cách tiếp cận thú vị, nặng nhọc để học JavaScript hiện đại từ đầu

Sử dụng mã BEGINNERJS để được giảm thêm $10

JavaScript mới bắt đầu. com

JavaScript, Loại dữ liệu Chỉnh sửa bài đăng

Một điều quan trọng cần hiểu trong JavaScript là sự khác biệt giữa tham chiếu và giá trị

Chúng tôi sẽ sử dụng một ví dụ để làm nổi bật sự khác biệt

Giả sử bạn có 2 biến sau, cả hai đều được gán giá trị là 'wes' 👇

const person = {}
typeof person //object
6

Bạn có thể kiểm tra xem các biến đó có bằng nhau hay không bằng cách thêm dòng mã này

const person = {}
typeof person //object
73, dòng này sẽ trả về giá trị true vì cả hai giá trị đều giống nhau về cả giá trị và loại

Tuy nhiên, điều gì sẽ xảy ra nếu bạn gán giá trị của "scott" cho

const person = {}
typeof person //object
74 và sau đó kiểm tra xem chúng có bằng nhau không?

const person = {}
typeof person //object
9

Điều đó sẽ trả về sai, điều này không có gì ngạc nhiên

const person = {}
typeof person //object
7

Bây giờ, câu hỏi là, điều gì sẽ xảy ra nếu bạn đặt

const person = {}
typeof person //object
74 bằng
const person = {}
typeof person //object
76 như hình trên 👆?

Nếu bạn đăng nhập lại để kiểm tra so sánh, nó sẽ trả về true

Nếu bạn kiểm tra giá trị của từng biến, thì cả

const person = {}
typeof person //object
74 và
const person = {}
typeof person //object
76 đều sẽ trả về "wes"

Làm thế nào để bạn tham chiếu một đối tượng trong javascript?

Nếu bạn lấy

const person = {}
typeof person //object
76 và đặt nó thành
const person = {}
typeof person //object
74, thì đó là điều tương tự, cả hai giá trị sẽ vẫn bằng "wes", như vậy

const person = Object()
typeof person //object
7

Bây giờ câu hỏi đặt ra là, nếu bạn thay đổi

const person = {}
typeof person //object
76 thành
const person = Object()
typeof person //object
72 như vậy, liệu
const person = {}
typeof person //object
74 và
const person = {}
typeof person //object
76 có còn bằng nhau không?

Bạn có thể kiểm tra giá trị của cả hai biến bằng cách nhập chúng vào bảng điều khiển

Làm thế nào để bạn tham chiếu một đối tượng trong javascript?

Bạn sẽ nhận thấy rằng

const person = {}
typeof person //object
74 vẫn là "wes" trong khi
const person = {}
typeof person //object
76 là "westopher", bởi vì chúng tôi chưa cập nhật
const person = {}
typeof person //object
74

Vì vậy, có một vài điều cần lưu ý trong bài tập này

  • Bộ ba bằng kiểm tra xem cả loại và giá trị đều giống hệt nhau
  • Khi đặt một biến chuỗi thành một biến chuỗi khác, giá trị được sao chép từ biến này sang biến khác. Có nghĩa là khi bạn lấy
    const person = {}
    typeof person //object
    74 và đặt nó thành
    const person = {}
    typeof person //object
    76 (
    const person = new Object()
    typeof person //object
    70), nó chỉ nhận giá trị của
    const person = {}
    typeof person //object
    76 và dán vào
    const person = {}
    typeof person //object
    74
  • Khi bạn cập nhật một trong các biến, biến trỏ tới nó không tự cập nhật. Bạn có thể nói duh, rõ ràng, đó là cách các biến hoạt động. Nhưng bây giờ chúng ta sẽ xem xét cách nó hoạt động đối với các đối tượng, bởi vì ví dụ chúng ta đã làm là với một chuỗi

Bây giờ hãy chứng minh điều này với một đối tượng

Tạo một biến

const person = new Object()
typeof person //object
73 và gán cho nó một đối tượng với các thuộc tính
const person = new Object()
typeof person //object
74 và
const person = new Object()
typeof person //object
75 như vậy 👇

const person = new Object()
typeof person //object
7

Sao chép mã đó bằng cách sao chép và dán và đổi tên biến thành

const person = new Object()
typeof person //object
76

const person = Object()
typeof person //object
5

Nếu bạn làm mới trang HTML và mở bảng điều khiển, nếu bạn thử nhập vào

const person = new Object()
typeof person //object
77, bạn sẽ thấy nó trả về false

Tại sao?

Làm thế nào để bạn tham chiếu một đối tượng trong javascript?

Bạn đang nghĩ "nó là cùng một đối tượng. Nó là một đối tượng có cùng nội dung bên trong nó, vậy tại sao chúng ta lại sai khi kiểm tra chúng?"

Đó là bởi vì khi bạn so sánh các đối tượng, nó được thực hiện bằng cách tham chiếu đến chính đối tượng đó, chứ không phải các giá trị bên trong đối tượng đó

Vì vậy, trong ví dụ của chúng ta,

const person = new Object()
typeof person //object
73 và
const person = new Object()
typeof person //object
76 đều là các đối tượng có cùng nội dung bên trong chúng, nhưng chúng không giống nhau vì chúng không phải là cùng một đối tượng

Đó là sự khác biệt so với nội dung của một chuỗi bởi vì một chuỗi chỉ có thể có một giá trị trong khi một đối tượng và như chúng ta sẽ tìm hiểu, mảng có thể có nhiều thứ bên trong chúng, cho dù chúng là thuộc tính và giá trị hay chỉ đơn giản là các mục

Điều tiếp theo chúng ta cần biết về các đối tượng là nếu bạn tạo một đối tượng

const person = Object()
typeof person //object
50 mới như vậy 👇

const car = Object.create()
0

Nếu làm mới trang HTML và xem

const person = Object()
typeof person //object
51 trong bảng điều khiển, bạn sẽ thấy như sau 👇

Làm thế nào để bạn tham chiếu một đối tượng trong javascript?

Bây giờ nếu bạn tiếp tục và cập nhật tên của

const person = Object()
typeof person //object
51 như minh họa bên dưới, bạn sẽ thấy gì trong bảng điều khiển khi đăng nhập
const person = Object()
typeof person //object
53?

const car = Object.create()
4

Làm thế nào để bạn tham chiếu một đối tượng trong javascript?

Bạn nhận được Larry

Tuy nhiên, nếu bạn đăng nhập

const person = Object()
typeof person //object
54 như hình bên dưới thì sao?

const car = Object.create()
6

Nếu bạn nhìn vào đối tượng person1, chúng ta đã đặt "wes" là đầu tiên và "bos" là cuối cùng. Vì vậy,

const person = Object()
typeof person //object
55 phải là Wes, phải không?

SAI LẦM. Nó trả về Larry

Làm thế nào để bạn tham chiếu một đối tượng trong javascript?

Nếu bạn thử gõ

const person = new Object()
typeof person //object
73,
const person = new Object()
typeof person //object
76 và
const person = Object()
typeof person //object
51 trong bảng điều khiển, bạn sẽ thấy kết quả trả về như sau 👇

Làm thế nào để bạn tham chiếu một đối tượng trong javascript?

chuyện gì đang xảy ra ở đó vậy?

Bạn vừa cập nhật

const person = Object()
typeof person //object
51, nhưng vì lý do nào đó,
const person = new Object()
typeof person //object
73 cũng được cập nhật

Trong bảng điều khiển, hãy thử cập nhật

const car = Object.create()
01 như vậy.
const car = Object.create()
02. Vì vậy, bây giờ
const car = Object.create()
01 sẽ trả về "Cool", nhưng còn
const person = new Object()
typeof person //object
73 thì sao?

Làm thế nào để bạn tham chiếu một đối tượng trong javascript?

Vậy cái quái gì vậy. ?

Lý do nó xảy ra là một khái niệm cơ bản của JavaScript, nó sẽ đến và cắn vào mông bạn nếu bạn không hiểu nó

Lý do xảy ra là khi các đối tượng và mảng được sao chép theo tham chiếu, (giống như bạn đã làm với

const car = Object.create()
06), bạn sẽ không sao chép nó

Bạn chỉ đơn giản là tạo một biến tham chiếu hoặc trỏ tới biến ban đầu thay vì tạo một bản sao của nó

Điều đó có thể dẫn đến các lỗi không mong muốn trong quá trình thực hiện vì bạn có thể nghĩ rằng mình chỉ đang tạo một bản sao của nó rồi sửa đổi nó, nhưng thực tế không phải vậy.

const person = Object()
typeof person //object
51 chưa bao giờ là đối tượng của chính nó, nó chỉ trỏ vào đối tượng ban đầu

Điều tương tự cũng xảy ra với Mảng và Bản đồ và Tập hợp mà chúng ta sẽ học trong tương lai

Vì vậy, các tùy chọn của bạn với tư cách là nhà phát triển là gì khi bạn muốn lấy một bản sao thay vì tham khảo?

Có một số cách khác nhau để bạn có thể sao chép một đối tượng

Toán tử lây lan

Cách dễ nhất để sao chép một cái gì đó là thông qua một thứ gọi là sự lây lan

Một trải rộng là một toán tử ba dấu chấm và nó được sử dụng để lấy mọi mục đơn lẻ trong một đối tượng và trải rộng nó vào một đối tượng mới

Vì vậy, thay vì làm

const car = Object.create()
06, bạn sẽ làm điều gì đó như thế này 👇

const person = Object()
typeof person //object
1

Những gì bạn đang làm ở đó là bạn đang gán biến

const person = Object()
typeof person //object
51 cho một đối tượng mới bằng cách sử dụng cú pháp ký tự đối tượng, sau đó sử dụng toán tử trải rộng trong đối tượng ký tự để sao chép
const person = new Object()
typeof person //object
73

Làm thế nào để bạn tham chiếu một đối tượng trong javascript?

Nếu bạn đăng nhập

const person = Object()
typeof person //object
51, bạn sẽ thấy rằng nó có các thuộc tính giống như
const person = new Object()
typeof person //object
73

Đó là bởi vì toán tử trải rộng sẽ lấy mọi mục trong một đối tượng và trải nó vào đối tượng tiếp theo

Có một cách khác để làm điều này, cách này không phổ biến kể từ khi lan truyền được giới thiệu, nhưng trước đây rất nhiều người đã sử dụng phương pháp này

Bạn gọi

const car = Object.create()
43 và bắt đầu với một đối tượng trống, sau đó gấp đối tượng khác vào đó

const person = {}
typeof person //object
90

Có thể bạn sẽ không thấy nhiều như vậy nhưng nếu bạn thấy, hãy biết rằng đó là một cách để lấy một bản sao của một đối tượng giống như sự lây lan

Vì vậy, nếu bạn sử dụng toán tử trải rộng và sau đó cố gắng thay đổi giá trị của

const person = Object()
typeof person //object
53 thành Larry, như vậy, bạn sẽ nhận được gì?

const person = {}
typeof person //object
91

Nếu bạn làm mới trang HTMl và sau đó đăng nhập

const person = Object()
typeof person //object
53 và
const person = Object()
typeof person //object
55, bạn sẽ thấy rằng chỉ có giá trị của
const person = Object()
typeof person //object
53 được cập nhật

Làm thế nào để bạn tham chiếu một đối tượng trong javascript?

Đó là bởi vì lần này bạn đã sử dụng toán tử chênh lệch cung cấp cho bạn một bản sao của person1

const car = Object.create()
48 chứ không phải một tài liệu tham khảo

Một điều cần lưu ý là toán tử trải rộng chỉ đi sâu một cấp

Điều đó có nghĩa là nếu bạn đi tới

const person = new Object()
typeof person //object
73 và thêm một đối tượng
const car = Object.create()
60, thì hãy sao chép đối tượng đó vào
const person = Object()
typeof person //object
51 như vậy 👇

const person = {}
typeof person //object
92

Làm thế nào để bạn tham chiếu một đối tượng trong javascript?

Nếu bạn cố cập nhật

const car = Object.create()
62 và sau đó xem đối tượng trong bảng điều khiển, bạn sẽ nhận thấy rằng
const car = Object.create()
63 bằng 100

Tuy nhiên, nếu bạn nhìn vào

const person = new Object()
typeof person //object
73, bạn sẽ nhận thấy rằng
const car = Object.create()
65 cũng được cập nhật thành 100

Làm thế nào để bạn tham chiếu một đối tượng trong javascript?

Đây là cùng một vấn đề.

const car = Object.create()
65 cũng được cập nhật mặc dù Wes vừa nói với chúng tôi rằng chúng tôi có thể sao chép một đối tượng bằng toán tử trải rộng

Vì vậy, những gì chúng ta cần rút ra từ đó là toán tử trải rộng và toán tử

const car = Object.create()
43, chúng thực hiện cái được gọi là sao chép nông, nghĩa là chúng sẽ chỉ đi sâu một cấp khi sao chép

Nếu bạn muốn thực hiện một bản sao sâu hoặc một bản sao sâu của một đối tượng, của tất cả các thuộc tính, có một số cách khác nhau để thực hiện

Cách phổ biến nhất rất có thể là sử dụng thứ gọi là thư viện tiện ích

Lodash

Wes thường sử dụng https nhất. //lodash. com

Lodash là một thư viện mà bạn có thể đưa vào tập lệnh của mình

Nó có rất nhiều phương thức được sử dụng khi làm việc với các đối tượng và mảng. Một trong số đó là để tạo các bản sao của các đối tượng. Hãy cùng tham khảo tài liệu bằng cách tìm kiếm từ khóa clone trên trang web

Làm thế nào để bạn tham chiếu một đối tượng trong javascript?

Dựa trên tài liệu, bạn có thể thấy rằng

const car = Object.create()
68 tạo một bản sao nông của một giá trị

Tài liệu cũng cung cấp một ví dụ về cách sử dụng phương pháp. Bạn sẽ sử dụng nó bằng cách gọi

const car = Object.create()
69, đây là nơi chứa tất cả các phương thức lodash, sau đó gọi
const person = Object()
typeof person //object
10

Điều đó sẽ chỉ thực hiện một bản sao cấp cao như chúng ta đã làm với toán tử trải rộng trước đó, vì vậy không có nhiều giá trị trong đó

Có một phương thức khác gọi là

const person = Object()
typeof person //object
11

Làm thế nào để bạn tham chiếu một đối tượng trong javascript?

Bản sao sâu cũng sẽ lấy một bản sao của bất kỳ đối tượng lồng nhau nào cho chúng tôi

Làm thế nào để bạn sử dụng nó?

Wes thích sử dụng thứ gọi là UNPKG (https. //giải nén. com)

Nếu bạn điều hướng đến

const person = Object()
typeof person //object
12, nó sẽ tải lodash mới nhất, vì vậy bạn chỉ cần lấy url đó và đi lên phía trên tập lệnh mà bạn cần và thêm nó

Khi bạn đang tải JavaScript mà mã khác phụ thuộc vào, bạn cần tải mã đó trước

Thêm phần sau vào phần thân, sau đầu vào 👇

const person = {}
typeof person //object
93

Bây giờ nếu bạn nhập

const car = Object.create()
69 trong bảng điều khiển của mình, bạn sẽ thấy rằng tất cả các giá trị lodash đều có sẵn cho chúng tôi

Sau này khi chúng tôi đề cập đến các mô-đun, Wes sẽ chỉ cho chúng tôi cách tải chỉ những cái bạn cần, vì không chắc bạn sẽ cần mọi phương thức trong thư viện nhưng để đơn giản, chúng tôi sẽ tải toàn bộ thư viện ngay bây giờ

Tiếp theo trong mã của chúng tôi, hãy nhận xét mã nơi bạn đang sao chép person1 thành person3 với toán tử lây lan,

const person = Object()
typeof person //object
14,

Bên dưới nó thêm đoạn mã sau👇

const person = {}
typeof person //object
94

Làm thế nào để bạn tham chiếu một đối tượng trong javascript?

Như bạn có thể thấy,

const car = Object.create()
65 vẫn bằng 10, bởi vì bạn đã thực hiện một bản sao sâu bằng phương thức lodash và sau đó chỉ sửa đổi giá trị cho đối tượng
const person = Object()
typeof person //object
51 vì
const person = Object()
typeof person //object
51 không còn là tham chiếu đến
const person = new Object()
typeof person //object
73

Wes không thường xuyên đạt được điều này nhưng điều đó chủ yếu là do những thứ anh ấy làm chỉ có thể được thực hiện bằng JavaScript, nhưng khi bạn phải làm những việc khó hơn như bản sao sâu, bạn có thể sử dụng phương pháp lodash

Lodash cũng có các phương thức để làm việc với mảng

Toán tử trải rộng

const person = Object()
typeof person //object
19 cũng hữu ích khi làm việc với các đối tượng hợp nhất

Để chứng minh điều đó, hãy làm một ví dụ

Thêm mã sau 👇

const person = {}
typeof person //object
95

Như vậy ta có 2 đối tượng này là

const person = {}
typeof person //object
900 và
const person = {}
typeof person //object
901, cả 2 đều có 2 thuộc tính

Bạn muốn hợp nhất 2 đối tượng này và cách dễ nhất để làm điều đó là chỉ cần tạo một biến mới, một đối tượng theo nghĩa đen,

const person = Object()
typeof person //object
19 theo sau là một trong những đối tượng bạn muốn hợp nhất, sau đó là dấu phẩy theo sau bởi một
const person = Object()
typeof person //object
19 của đối tượng tiếp theo

const person = {}
typeof person //object
96

Bạn có thể trải bao nhiêu đối tượng tùy thích

Bây giờ chúng tôi có một thuộc tính khoảng không quảng cáo mới mà bạn có thể thấy nếu bạn làm mới trang, mở bảng điều khiển và nhập vào

const person = {}
typeof person //object
904

Làm thế nào để bạn tham chiếu một đối tượng trong javascript?

Bạn cũng có thể đặt một số đối tượng trên dòng riêng của chúng và thêm các giá trị của riêng bạn vào

Ví dụ: bạn có thể làm như sau 👇

const person = {}
typeof person //object
97

Và bạn có thể thấy rằng

const person = {}
typeof person //object
905 sẽ được thêm vào nó

Làm thế nào để bạn tham chiếu một đối tượng trong javascript?

Bạn có thể trộn và kết hợp sự lan rộng

Điều duy nhất bạn thực sự cần biết là nếu có các bản sao (ví dụ: hàu có thể là nấm sò hoặc hàu từ biển), thì con nào sẽ thắng?

Giả sử bạn đã thêm hàu vào

const person = {}
typeof person //object
900 VÀ
const person = {}
typeof person //object
901 như vậy 👇

const person = {}
typeof person //object
98

Làm thế nào để bạn tham chiếu một đối tượng trong javascript?

const person = {}
typeof person //object
908 chiến thắng. Tại sao?

const person = {}
typeof person //object
901 xuất hiện sau trong trải bài nên thứ tự của trải bài có ý nghĩa trong trường hợp này

Tương tự, nếu bạn nhập mã sau 👇

const person = {}
typeof person //object
99

Bacon sẽ là 10 vì nó sẽ ghi đè lên giá trị trong

const person = {}
typeof person //object
900

Wes thực sự thích toán tử lây lan. Nó cũng có thể được sử dụng cho mảng mà chúng ta sẽ tìm hiểu trong các bài học về mảng

Điều cuối cùng chúng ta sẽ nói về nhà là khái niệm chuyển qua tham chiếu so với sao chép cũng áp dụng cho các chức năng

Giả sử bạn có một hàm

const person = {}
typeof person //object
911, hàm này nhận một đối số
const person = {}
typeof person //object
912 và trong hàm này, bạn đã sửa đổi giá trị của dữ liệu thành một thứ khác, như vậy 👇

const person = {}
typeof person //object
70

Tất cả những gì chức năng này làm là lấy một đối số và thay đổi dữ liệu đó vì bất kỳ lý do gì

Bây giờ, nếu bạn chạy hàm đó và chuyển cho nó biến

const person = {}
typeof person //object
74 được đặt thành "wes" trong mã, nếu bạn xem qua hàm đó và ghi lại dữ liệu như vậy 👇

const person = {}
typeof person //object
71

Nếu bạn làm mới trang và nhập

const person = {}
typeof person //object
74 vào bảng điều khiển, nó vẫn sẽ trả về "wes"

Điều đó có nghĩa là khi bạn chuyển biến

const person = {}
typeof person //object
74 sang
const person = {}
typeof person //object
911, bạn chỉ chuyển vào giá trị của "wes", nó không thực sự tham chiếu đến biến bên ngoài (điều này tốt. )

Bây giờ, hãy làm điều đó một lần nữa với một đối tượng 👇

const person = {}
typeof person //object
72

Làm thế nào để bạn tham chiếu một đối tượng trong javascript?

Nếu bạn làm mới trang và nhìn vào bảng điều khiển, bạn sẽ thấy giá trị của

const person = {}
typeof person //object
912 được ghi lại như hình trên

Tuy nhiên, nếu bạn gõ vào

const person = {}
typeof person //object
904, là đối tượng nằm ngoài hàm
const person = {}
typeof person //object
919, bạn sẽ thấy rằng nó cũng chứa thuộc tính
const person = {}
typeof person //object
920

Làm thế nào để bạn tham chiếu một đối tượng trong javascript?

Điều đó có nghĩa là nếu bạn chuyển một đối tượng vào một hàm và bạn sửa đổi đối tượng đó, thì đối tượng bên ngoài cũng sẽ được cập nhật

Đó không phải là trường hợp đối với booleans, số và chuỗi, nhưng đó là trường hợp đối với đối tượng và mảng

Điều đó có nghĩa là nếu bạn sửa đổi một đối tượng hoặc một mảng được truyền vào một hàm bên trong hàm, hãy biết rằng bạn có thể vô tình sửa đổi dữ liệu nằm ngoài nó

Đó là một nguồn lỗi lớn, bởi vì khi bạn chuyển dữ liệu dưới dạng tham chiếu, bạn có thể vô tình sửa đổi dữ liệu nằm ngoài chức năng đó

Nếu đúng như vậy, bạn đảm bảo rằng bạn chuyển nó dưới dạng một bản sao

Có thể trường hợp bạn muốn sửa đổi dữ liệu bên ngoài, nhưng đôi khi bạn không muốn và điều đó dẫn đến lỗi

Bạn có thể tham khảo một đối tượng?

Các đối tượng được gán và sao chép theo tham chiếu . Nói cách khác, một biến lưu trữ không phải “giá trị đối tượng”, mà là “tham chiếu” (địa chỉ trong bộ nhớ) cho giá trị. Vì vậy, sao chép một biến như vậy hoặc chuyển nó dưới dạng đối số hàm sao chép tham chiếu đó, chứ không phải chính đối tượng đó.

Tham chiếu đến một đối tượng là gì?

Một tham chiếu bao gồm một danh sách địa chỉ được sắp xếp theo thứ tự và thông tin lớp về đối tượng được tham chiếu . Mỗi địa chỉ được đại diện bởi một lớp con của RefAddr. và chứa thông tin về cách xây dựng đối tượng.

Làm cách nào để in tham chiếu của một đối tượng trong JavaScript?

Phương pháp-1. sử dụng bảng điều khiển. log để in một đối tượng trong JavaScript
Phương pháp-2. Sử dụng đối tượng. ký hiệu propertyName để in các giá trị Đối tượng trong JavaScript
Phương pháp-3. Sử dụng stringify() để in các đối tượng trong JavaScript
Phương pháp-4. Sử dụng vòng lặp for để in các giá trị đối tượng trong JavaScript

Các đối tượng có được lưu trữ theo tham chiếu trong JavaScript không?

Đối tượng và Mảng . Khi có nhiều hơn một biến được đặt để lưu trữ một đối tượng, mảng hoặc hàm, các biến đó sẽ trỏ đến cùng một không gian được phân bổ trong bộ nhớ. Thông qua tham chiếu. Objects in JavaScript are passed by reference. When more than one variable is set to store either an object , array or function , those variables will point to the same allocated space in the memory. Passed by reference.