Hướng dẫn javascript deep dive - tìm hiểu sâu về javascript
Show
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 3 là gì và tại sao nó hữu ích.Nội dung chính ShowShow
Đây là cho bạnChức năng so với lập trình hướng đối tượng Phương pháp tiếp cận chức năngwhat 3 is and why it is helpful in a simple manner without unnecessary jargon.Cách tiếp cận hướng đối tượng Điều này có liên quan gì đến điều này?Cuối cùng, cái này là gì Ràng buộc rõ ràng nàyfunctional programming and object-oriented programming.Chức năng so với lập trình hướng đối tượngPhương pháp tiếp cận chức năng Cách tiếp cận hướng đối tượng Điều này có liên quan gì đến điều này?Cuối cùng, cái này là gì Ràng buộc rõ ràng này Hàm mũi tên Sự kết luậnTôi đã nhận thấy rằng nhiều lời giải thích cho
Phương pháp tiếp cận chức năngCách tiếp cận hướng đối tượng
Điều này có liên quan gì đến điều này? Cuối cùng, cái này là gì Ràng buộc rõ ràng này Cách tiếp cận hướng đối tượngĐiều này có liên quan gì đến điều này?into an object that has everything it needs to generate what you as the developer need. Cuối cùng, cái này là gì Ràng buộc rõ ràng nàyHàm mũi tên Điều này có liên quan gì đến điều này?Cuối cùng, cái này là gì Ràng buộc rõ ràng nàytruly object-oriented.Lý do duy nhất mà các phương pháp 80 hoặc 81 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 85 sau khi 82 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à 87. 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 87 làm điều gì đó như thế này: 8Cô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 82 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ụng00 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 81 từ trong vòng 87.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 07), đó 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 93 được sử dụng trong một phương thức đối tượng và phương thức được gọi trong bối cảnh của đối tượng đó, 3 đề cập đến chính đối tượng.3 được sử dụng trong một phương thức đối tượng và phương thức được gọi trong bối cảnh của đối tượng đó,
3 đề cập đến chính đối tượng.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 81 từ trong vòng ____37, chúng tôi chỉ có thể gọi 23 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 82 để sử dụng 3: 0Bâ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 29 đượ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 33 vào đối tượng của chúng tôi: 2Lưu ý rằng chúng tôi đã thêm 3 vào đối tượng của mình, để 35 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: 3Và bây giờ JavaScript: 8Trong 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 35 để 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à 37. 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: 1Bây giờ bạn có thấy vấn đề không? Khi chúng tôi đặt trình xử lý onclick là 37 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 37 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 80, điều đó có nghĩa là 3 không còn đề cập đến 80. Nó thực sự đề cập đến đối tượng toàn cầu, có nghĩa là 83 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 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 07), đó 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 93 được sử dụng trong một phương thức đối tượng và phương thức được gọi trong bối cảnh của đối tượng đó, 3 đề cập đến chính đối tượng.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! 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ì 93 đề cập đến nơi một hàm mũi tên được khai báo, 3 đề cập đến cùng một điều bên trong hàm mũi tên đó.3 đề cập đến nơi một hàm mũi tên được khai báo, 3 đề cập đến cùng một điều bên trong hàm mũi tên đó.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ụ 82 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 87: 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ì 20 không được gọi trong bối cảnh của một đối tượng, 3 bên trong 20 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 24. Hãy lấy cho tôi đối tượng 80, hãy tìm thuộc tính 35 và gọi hàm được gán cho thuộc tính đó.call the function assigned to that attribute.”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 27. Hãy lấy cho tôi chức năng với tên 20 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 29 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 35 được gọi là trong bối cảnh của một đối tượng không? 83 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 80 và tìm kiếm thuộc tính 35. Lấy giá trị của nó (tình cờ là một hàm), chuyển nó vào 29 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 80 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 80, điều đó có nghĩa là 83 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ì 93 đề cập đến nơi một hàm mũi tên được khai báo, 3 đề cập đến cùng một điều bên trong hàm mũi tên đó.3 đề cập đến nơi một hàm mũi tên được khai báo, 3 đề cập đến cùng một điều bên trong hàm mũi tên đó.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ụconst fullNames = getFullNames(data) // ['Ross, Bob', 'Smith, Joanna', ...]82 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 const fullNames = getFullNames(data) // ['Ross, Bob', 'Smith, Joanna', ...]87:const fullNames = getFullNames(data) // ['Ross, Bob', 'Smith, Joanna', ...]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?
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 24. Hãy lấy cho tôi đối tượng 80, hãy tìm thuộc tính 35 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 27. Hãy lấy cho tôi chức năng với tên 20 và gọi nó là. Lưu ý làm thế nào không có đề cập đến một đối tượng? |