Hướng dẫn deep dive javascript - javascript lặn sâu
Sử dụng thuật ngữ đơn giản và một ví dụ trong thế giới thực, bài đăng này giải thích Show Đây là cho bạnTôi đã nhận thấy rằng nhiều lời giải thích cho 3 trong JavaScript được dạy cho rằng bạn đang đến từ một số ngôn ngữ lập trình hướng đối tượng như Java, C ++ hoặc Python. Bài đăng này hướng đến những người bạn không có định kiến về những gì bạn nghĩ 3is hoặc nó nên là gì. Tôi sẽ cố gắng giải thích 3 là gì và tại sao nó hữu ích một cách đơn giản mà không có biệt ngữ không cần thiết.what 3 is and why it is helpful in a simple manner without unnecessary jargon.Có lẽ bạn đã trì hoãn lặn vào 3 vì nó trông kỳ lạ và đáng sợ. Hoặc có thể bạn chỉ sử dụng nó bởi vì StackoverFlow nói rằng bạn cần nó để thực hiện một số điều nhất định trong React.Trước khi chúng tôi đi sâu vào những gì 3 thực sự là và tại sao bạn sẽ sử dụng nó, trước tiên chúng tôi cần hiểu sự khác biệt giữa lập trình chức năng và lập trình hướng đối tượng.functional programming and object-oriented programming.Chức năng so với lập trình hướng đối tượngBạn có thể hoặc không biết rằng JavaScript có cả cấu trúc chức năng và hướng đối tượng, vì vậy bạn có thể chọn tập trung vào cái này hoặc cái kia hoặc sử dụng cả hai. Tôi đã tham gia chương trình chức năng sớm trong hành trình JavaScript của mình và tránh lập trình hướng đối tượng như bệnh dịch hạch. Tôi đã không biết hoặc hiểu các từ khóa hướng đối tượng như 3. Tôi nghĩ rằng một lý do tôi đã không hiểu điều đó là vì tôi đã thực sự hiểu tại sao nó lại cần thiết. Có vẻ như tôi có thể làm mọi thứ tôi cần làm mà không cần dựa vào 3.Và tôi đã đúng. Loại của. Bạn có thể có thể nhận được bằng cách chỉ tập trung vào một mô hình và không bao giờ tìm hiểu về cái kia, nhưng bạn sẽ bị giới hạn với tư cách là một nhà phát triển JavaScript. Để minh họa sự khác biệt giữa lập trình chức năng và hướng đối tượng, tôi sẽ sử dụng một mảng dữ liệu bạn bè trên Facebook làm ví dụ. Hãy để nói rằng bạn đang xây dựng một ứng dụng web nơi người dùng đăng nhập với Facebook và bạn hiển thị một số dữ liệu liên quan đến bạn bè trên Facebook của họ. Bạn sẽ cần phải nhấn điểm cuối trên Facebook để lấy dữ liệu của bạn bè của họ. Nó có thể có một số thông tin như 1, ________ 22, ________ 23, 4, 5, 6 và 7.
Dữ liệu trên là những gì bạn nhận được từ API Facebook (giả, tưởng tượng). Bây giờ bạn cần phải chuyển đổi nó, để nó ở định dạng hữu ích cho bạn và dự án của bạn. Hãy nói rằng bạn muốn hiển thị những điều sau đây cho mỗi người bạn của người dùng:
Phương pháp tiếp cận chức năngMột cách tiếp cận chức năng sẽ chuyển toàn bộ mảng hoặc mỗi phần tử của một mảng thành một hàm trả về dữ liệu được thao tác mà bạn cần:
Bạn bắt đầu với dữ liệu thô (từ API Facebook). Để biến nó thành dữ liệu hữu ích cho bạn, bạn chuyển dữ liệu vào một hàm và đầu ra là hoặc bao gồm dữ liệu được thao tác mà bạn có thể sử dụng trong ứng dụng của mình để hiển thị cho người dùng. Bạn có thể tưởng tượng làm một cái gì đó tương tự để có được ba bài viết ngẫu nhiên và tính toán số ngày cho đến sinh nhật người bạn đó. Cách tiếp cận chức năng là lấy dữ liệu thô của bạn, truyền nó qua một hàm hoặc nhiều chức năng và xuất dữ liệu hữu ích cho bạn và dự án của bạn. Cách tiếp cận hướng đối tượngCách tiếp cận hướng đối tượng có thể khó nắm bắt hơn một chút đối với những người mới lập trình và học JavaScript. Ý tưởng ở đây là bạn biến mỗi người bạn thành một đối tượng có mọi thứ cần thiết để tạo ra những gì bạn là nhà phát triển cần.into an object that has everything it needs to generate what you as the developer need. Bạn có thể tạo các đối tượng có thuộc tính 9 và hai hàm 0 và 1 dành riêng cho người bạn đó.
Cách tiếp cận hướng đối tượng là tạo các đối tượng cho dữ liệu của bạn có trạng thái và bao gồm tất cả thông tin họ cần để tạo dữ liệu hữu ích cho bạn và dự án của bạn. Điều này có liên quan gì đến điều này?Bạn có thể chưa bao giờ nghĩ sẽ viết một cái gì đó như 2 ở trên và bạn có thể nghĩ rằng một cái gì đó giống như thế có thể khá hữu ích. Tuy nhiên, bạn cũng có thể nhận thấy rằng nó không thực sự hướng đến đối tượng.truly object-oriented.Lý do duy nhất mà các phương pháp 0 hoặc 1 thậm chí sẽ hoạt động trong ví dụ trên là vì đóng cửa. Họ vẫn có quyền truy cập vào 5 sau khi 2 trả lại vì đóng cửa. Để biết thêm thông tin về việc đóng cửa, hãy xem bạn không biết JS: Phạm vi & Đóng.Điều gì sẽ xảy ra nếu bạn có một phương pháp khác, hãy để Lôi gọi nó là 7. Lưu ý rằng một phương thức (liên quan đến một đối tượng trong JavaScript) chỉ là một thuộc tính có giá trị là một hàm. Chúng tôi muốn 7 làm điều gì đó như thế này:
Công việc vừa ý? No! Tất cả mọi thứ trong đối tượng mới được tạo của chúng tôi đều có quyền truy cập vào tất cả các biến trong 2 nhưng không phải bất kỳ thuộc tính hoặc phương thức nào trong chính đối tượng. Chắc chắn, bạn sẽ đặt câu hỏi:Bạn có thể sử dụng0 và Vâng, bạn hoàn toàn có thể. Nhưng điều gì sẽ xảy ra nếu chúng ta cũng muốn đưa vào lời chào bao nhiêu ngày cho đến sinh nhật người bạn đó? Chúng tôi sẽ phải tìm cách gọi 1 từ trong vòng 7.Nó thời gian cho 3!Ảnh của Sydney Rae trên unplashCuối cùng, cái này là gì 3 có thể đề cập đến những điều khác nhau trong các trường hợp khác nhau. Theo mặc định, 3 đề cập đến đối tượng toàn cầu (trong trình duyệt, đây là đối tượng 7), đó là tất cả những gì hữu ích. Quy tắc 3 hữu ích cho chúng tôi ngay bây giờ là như sau:Nếu Bạn nói được gọi là trong bối cảnh của đối tượng đó, điều đó thậm chí có nghĩa là gì? Đừng lo lắng, chúng tôi sẽ nhận được điều đó sau! Vì vậy, nếu chúng tôi muốn gọi 1 từ trong vòng ____37, chúng tôi chỉ có thể gọi 3 vì 3 trong kịch bản đó chỉ đề cập đến chính đối tượng.Lưu ý bên lề: Don Tiết sử dụng 3 trong hàm OLE thông thường trong phạm vi toàn cầu hoặc trong phạm vi của một hàm khác! 3 là một cấu trúc hướng đối tượng. Do đó, nó chỉ có ý nghĩa trong bối cảnh của một đối tượng (hoặc lớp)!Hãy để Let Refactor 2 để sử dụng 3:
Bây giờ, tất cả mọi thứ mà đối tượng này cần đều được đưa vào chính đối tượng một khi 9 được thực thi. Phương pháp của chúng tôi không còn dựa vào việc đóng cửa. Họ chỉ sử dụng thông tin có trong chính đối tượng.OK, vì vậy đó là một cách để sử dụng3, nhưng bạn nói rằng Có một số lần bạn muốn buộc 3 là một cái gì đó đặc biệt. Một ví dụ tốt là cho người xử lý sự kiện. Hãy nói rằng chúng tôi muốn mở một trang Facebook của bạn bè khi người dùng nhấp vào họ. Chúng tôi có thể thêm một phương thức 3 vào đối tượng của chúng tôi:
Lưu ý rằng chúng tôi đã thêm 3 vào đối tượng của mình, để 5 có quyền truy cập vào nó, để chúng tôi có thể mở một cửa sổ mới với trang Facebook của người bạn đó. Bây giờ chúng ta chỉ cần viết HTML:
Và bây giờ JavaScript:
Trong mã trên, chúng tôi tạo một đối tượng cho Bob Ross. Chúng tôi nhận được phần tử DOM được liên kết với Bob Ross. Và bây giờ chúng tôi muốn thực hiện phương thức 5 để mở trang Facebook của Bob. Nên làm việc như mong đợi, phải không?Nope! Có chuyện gì? Lưu ý rằng chức năng chúng tôi đã chọn cho trình xử lý onclick là 7. Xem vấn đề chưa? Điều gì sẽ xảy ra nếu chúng ta viết lại nó như thế này:
Bây giờ bạn có thấy vấn đề không? Khi chúng tôi đặt trình xử lý onclick là 7 Những gì chúng tôi thực sự đang làm là lấy chức năng được lưu trữ trong 7 và chuyển nó thành một đối số. Nó không còn được đính kèm trên mạng với 0, điều đó có nghĩa là 3 không còn đề cập đến 0. Nó thực sự đề cập đến đối tượng toàn cầu, có nghĩa là 3 không được xác định. Có vẻ như chúng ta không gặp may tại thời điểm này.Nó thời gian cho 4!Ảnh của Ksenia Makagonova trên unplashRàng buộc rõ ràng nàyNhững gì chúng ta cần làm là liên kết rõ ràng 3 với 0. Chúng ta có thể làm điều đó bằng cách sử dụng 4:
Trước đó, 3 đã được đặt dựa trên quy tắc mặc định. Với việc sử dụng 4, chúng tôi đã đặt rõ ràng giá trị của 3 trong 7 để trở thành chính đối tượng hoặc 0.Cho đến thời điểm này, chúng tôi đã thấy lý do tại sao 3 là hữu ích và tại sao bạn có thể muốn ràng buộc rõ ràng 3. Chủ đề cuối cùng chúng tôi sẽ đề cập đến 3 là các hàm mũi tên.Hàm mũi tênBạn có thể nhận thấy rằng các chức năng mũi tên là điều mới. Mọi người dường như thích họ vì họ súc tích và thanh lịch. Bạn có thể biết rằng chúng hơi khác so với các chức năng bình thường nhưng có lẽ bạn không biết sự khác biệt là gì. Có lẽ cách đơn giản nhất để mô tả cách các chức năng mũi tên khác nhau là: Bất cứ điều gì OK, điều đó không hữu ích, tôi nghĩ đó là hành vi của một chức năng bình thường? Hãy để giải thích với ví dụ 2 của chúng tôi. Hãy nói rằng chúng tôi muốn thêm một chức năng trợ giúp nhỏ trong 7: 0Điều này sẽ hoạt động? Nếu không, làm thế nào chúng ta có thể thay đổi nó để làm cho nó hoạt động? Không, nó sẽ không hoạt động. Bởi vì 0 không được gọi trong bối cảnh của một đối tượng, 3 bên trong 0 rơi trở lại quy tắc mặc định là đối tượng toàn cầu.Bạn nói rằng nó không được gọi là trong bối cảnh của một đối tượng. Nếu đó không phải là người được gọi là trong bối cảnh của một đối tượng thì tôi không biết là gì. Tôi biết rằng, trong bối cảnh của một đối tượng, là thuật ngữ mơ hồ. Có lẽ một cách tốt để xác định xem một hàm được gọi là trong bối cảnh của một đối tượng hay không là tự nói với mình thông qua cách gọi chức năng và xác định xem một đối tượng có gắn liền với chức năng hay không. Hãy để nói chuyện thông qua những gì xảy ra khi chúng ta thực hiện 4. Hãy lấy cho tôi đối tượng 0, hãy tìm thuộc tính 5 và gọi hàm được gán cho thuộc tính đó.call the function assigned to that attribute.”Bây giờ, hãy để nói chuyện thông qua những gì xảy ra khi chúng ta thực hiện 7. Hãy lấy cho tôi chức năng với tên 0 và gọi nó là. Lưu ý làm thế nào không có đề cập đến một đối tượng?OK, ở đây, một điều khó khăn để kiểm tra kiến thức của bạn. Hãy nói rằng có một chức năng 9 trong đó tất cả những gì nó làm là các chức năng gọi: 1Điều gì sẽ xảy ra nếu chúng ta đã làm điều này: 00? Bạn có nói rằng 5 được gọi là trong bối cảnh của một đối tượng không? 3 sẽ được xác định?Hãy nói chuyện với nhau thông qua nó: Hãy lấy đối tượng 0 và tìm kiếm thuộc tính 5. Lấy giá trị của nó (tình cờ là một hàm), chuyển nó vào 9 và đặt tên cho nó 06. Bây giờ, thực thi chức năng có tên 06. Lưu ý rằng chức năng được tách ra khỏi 0 trước khi nó được gọi và do đó không được gọi là trong bối cảnh của đối tượng 0, điều đó có nghĩa là 3 sẽ không được xác định.Các chức năng của mũi tên để giải cứu: 2Quy tắc của chúng tôi từ trên: Bất cứ điều gì Hàm mũi tên được khai báo bên trong 7. Chúng tôi biết rằng khi chúng tôi sử dụng 3 trong 7, nó đang đề cập đến chính đối tượng. Do đó, 3 bên trong hàm mũi tên đang đề cập đến chính đối tượng đó là những gì chúng ta muốn.Sự kết luận 3 là một công cụ đôi khi được sử dụng nhưng hữu ích để phát triển các ứng dụng JavaScript. Đây chắc chắn không phải là tất cả có để 3. Một số chủ đề không được đề cập là:
Tôi khuyến khích bạn tự hỏi mình những câu hỏi về những gì bạn nghĩ 3 nên ở trong một số tình huống nhất định, và sau đó kiểm tra bản thân bằng cách chạy mã đó trong trình duyệt. Nếu bạn muốn tìm hiểu thêm về 3, hãy xem bạn không biết JS: Nguyên mẫu này & đối tượng.Và nếu bạn muốn tự kiểm tra, hãy xem các bài tập YDKJS: Các nguyên mẫu này & đối tượng. Photo by Jonas Jacobsson on UnsplashHọc mã miễn phí. Chương trình giảng dạy 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 |