Tại sao self lại cần thiết thay vì this trong JavaScript?
00. 00 Trong ba bài học trước, tôi đã đề cập đến nhiều điều kỳ quặc và rắc rối khác nhau của ngôn ngữ JavaScript. Đây là bài học cuối cùng dành cho những điều kỳ quặc, và toàn bộ bài học được dành cho một điều duy nhất. bối cảnh cuộc gọi của các chức năng và từ khóa Show 00. 15 Trong các bài học trước, tôi đã sử dụng từ khóa 00. 25 Nếu bạn đã từng có suy nghĩ “Tại sao mình phải định nghĩa rõ ràng về 00. 35 Vấn đề với 00. 50 Nó trở nên phức tạp khi bạn bắt đầu nhận các hàm bên trong các hàm và JavaScript thường làm điều này. Để làm phức tạp thêm mọi thứ, chức năng mũi tên hoạt động khác. Nó thực sự gọn gàng hơn nhiều nhưng việc trộn và kết hợp nó trong mã có thể gây ra kết quả đáng ngạc nhiên 01. 07 Trên slide này, bạn sẽ thấy từ khóa 01. 16 Điều này nhấn mạnh cách 01. 39 Trong một chức năng mức toàn cầu chẳng hạn như 01. 46 Đoạn thứ ba ở đây là một đối tượng được gọi là 01. 58 Có thể hữu ích khi nghĩ về ba ngữ cảnh khác nhau này bằng cách xem xét cái gì đang gọi hàm. Để gọi phương thức 02. 16 Bối cảnh của 02. 26 Khi bạn gọi 02. 35 Điều này rất quan trọng để hiểu trước khi tôi làm cho nó phức tạp hơn. Trong Python, 02. 46 Điều này dẫn đến hậu quả với các hàm ẩn danh và lồng nhau 02. 52 Hãy xem ngữ cảnh bên trong một đối tượng phức tạp hơn. Đối tượng 03. 06 Trong phương thức đó, ngữ cảnh của 03. 23 Một cách thuận tiện để làm điều này là sử dụng phương thức 03. 36 Trong ngữ cảnh của hàm ẩn danh này, từ khóa 03. 45 Hãy nghĩ lại câu hỏi “Nó được gọi như thế nào?” . Cái gì ở bên trái của dấu chấm gọi của một chức năng ẩn danh? 03. 58 Hàm ẩn danh kết thúc trong ngữ cảnh 04. 16 Trong bài học trước, tôi đã giới thiệu với các bạn hàm mũi tên. Tôi đã giải thích nó như một lối tắt để xác định chức năng. Vâng, nó có một khía cạnh quan trọng khác. Nó xử lý từ khóa 04. 27 Trên thực tế, nó không sử dụng nó. Trong ngữ cảnh của hàm mũi tên, 04. 50 Lần này tôi đang sử dụng chức năng mũi tên bên trong 05. 07 Đây là một lý do thực sự tốt để sử dụng các hàm mũi tên bên trong các phương thức đối tượng. Nó làm cho 05. 17 Tuy nhiên, một lời cảnh báo. Việc thiếu ngữ cảnh trong hàm mũi tên có thể là một vấn đề cũng như một giải pháp. Hãy xem xét đoạn mã cuối cùng này. Bằng cách sử dụng phím tắt để xác định phương thức 05. 32 Nếu bạn dừng mã tại thời điểm này và kiểm tra giá trị của 05. 43 Thực ra lúc đó tôi nghĩ từ khóa 06. 03 Có nhiều giải pháp khác cho vấn đề ngữ cảnh ngoài chức năng mũi tên. Một cách giải quyết phổ biến là lưu trữ giá trị của 06. 16 Giá trị của 06. 35 Tính năng này rất tiện dụng nhưng không phải chức năng nào cũng có. Nhưng nếu bạn đang sử dụng 06. 42 JavaScript cung cấp ba hàm dựng sẵn cho phép bạn thiết lập rõ ràng ngữ cảnh cho một hàm gọi. Đầu tiên là 06. 57 Bạn có thể truyền ngữ cảnh và đối số cho hàm được đặt tên. Tích hợp sẵn 07. 11 Và cuối cùng, tích hợp sẵn 07. 28 Nếu 07. 40 Mọi thứ trên trang trình bày này giờ đây có cảm giác hơi khó hiểu khi các chức năng mũi tên tồn tại và ý tôi không phải là hơi khó hiểu khi nói “Tôi tự hào về giải pháp thay thế mà tôi đã tìm thấy, điều này thật tuyệt phải không?” 07. 54 Chà, bây giờ. Đó là một hành trình dài. Trong bài học cuối cùng, tôi sẽ kết thúc và tóm tắt mọi thứ đã được đề cập Tại sao lại sử dụng self trong JavaScript?Từ khóa self được sử dụng để chỉ chính lớp hiện tại chỉ trong phạm vi của lớp đó trong khi đó, $this được dùng để chỉ .
Cái này và bản thân có giống nhau không?Về mặt kỹ thuật, cả self và this đều được sử dụng cho cùng một mục đích . Chúng được sử dụng để truy cập biến được liên kết với phiên bản hiện tại. Sự khác biệt duy nhất là, bạn phải bao gồm self một cách rõ ràng làm tham số đầu tiên cho một phương thức cá thể trong Python, trong khi đó không phải là trường hợp của Java.
Bản thân trong JavaScript là gì?bản thân luôn nằm trong ngữ cảnh của một đối tượng . Trong JavaScript, bối cảnh dựa trên chức năng gọi. Nếu không có chức năng gọi, thì điều này có nghĩa là bối cảnh toàn cầu. Bên trong trình duyệt, đây là ngữ cảnh cửa sổ, nhưng ý tưởng tương tự.
Hàm nào không bao giờ được sử dụng để chạy JS?Cảnh báo. Thực thi JavaScript từ một chuỗi là một rủi ro bảo mật rất lớn. Kẻ xấu rất dễ chạy mã tùy ý khi bạn sử dụng eval() . Xem Không bao giờ sử dụng eval(). , phía dưới. Hàm eval() đánh giá mã JavaScript được biểu diễn dưới dạng chuỗi và trả về giá trị hoàn thành của nó. |