Hướng dẫn call apply and bind in javascript mdn - gọi apply và bind trong javascript mdn
Phương thức Show
Thử nóCú pháp
Thông số 6Giá trị được truyền dưới dạng tham số 5 cho hàm đích 8 khi hàm giới hạn được gọi. Nếu hàm không ở chế độ nghiêm ngặt, 9 và 0 sẽ được thay thế bằng đối tượng toàn cầu và các giá trị nguyên thủy sẽ được chuyển đổi thành các đối tượng. Giá trị bị bỏ qua nếu hàm giới hạn được xây dựng bằng toán tử 1. 2 Tùy chọnOptionalCác đối số để mong đợi các đối số được cung cấp cho chức năng ràng buộc khi gọi 8.Giá trị trả vềMột bản sao của hàm đã cho với giá trị 5 được chỉ định và các đối số ban đầu (nếu được cung cấp).Sự mô tảHàm 4 tạo ra một hàm ràng buộc mới. Gọi hàm ràng buộc thường dẫn đến việc thực thi chức năng mà nó kết thúc, còn được gọi là hàm đích. Hàm ràng buộc sẽ lưu trữ các tham số được truyền - bao gồm giá trị của 5 và một vài đối số đầu tiên - là trạng thái bên trong của nó. Các giá trị này được lưu trữ trước, thay vì được thông qua tại thời điểm gọi. Nói chung, bạn có thể thấy 7 tương đương với 8 cho hiệu ứng khi nó được gọi (nhưng không phải khi 9 được xây dựng).Một hàm ràng buộc có thể bị ràng buộc hơn nữa bằng cách gọi 0, tạo ra một hàm ràng buộc khác 1. Giá trị 6 bị ràng buộc mới bị bỏ qua, bởi vì hàm mục tiêu của 1, là 9, đã có một ràng buộc 5. Khi 1 được gọi, nó sẽ gọi 9, từ đó gọi 8. Các đối số mà 8 cuối cùng nhận được, theo thứ tự: các đối số bị ràng buộc bởi 9, các đối số bị ràng buộc bởi 1 và các đối số nhận được bởi 1.
Một hàm ràng buộc cũng có thể được xây dựng bằng toán tử 1 nếu hàm đích của nó có thể xây dựng được. Làm như vậy hoạt động như thể chức năng đích thay vào đó đã được xây dựng. Các đối số được chuẩn bị được cung cấp cho chức năng đích như bình thường, trong khi giá trị 5 được cung cấp bị bỏ qua (vì việc xây dựng chuẩn bị 5 của chính nó, như được thấy bởi các tham số của 6). Nếu hàm giới hạn được xây dựng trực tiếp, 7 sẽ là hàm đích thay thế. (Nghĩa là, hàm ràng buộc trong suốt đến 7.)
Tuy nhiên, vì một hàm ràng buộc không có thuộc tính 9, nó không thể được sử dụng làm lớp cơ sở cho 0.
Khi sử dụng hàm ràng buộc làm phía bên phải của 1, 1 sẽ đạt được chức năng đích (được lưu trữ bên trong trong hàm ràng buộc) và thay vào đó đọc 9.
Hàm giới hạn có các thuộc tính sau: 4 4 của hàm đích trừ đi số lượng đối số bị ràng buộc (không tính tham số 6), với 0 là giá trị tối thiểu. 7 7 của hàm đích cộng với tiền tố 9.Hàm giới hạn cũng kế thừa chuỗi nguyên mẫu của hàm đích. Tuy nhiên, nó không có các thuộc tính riêng khác của hàm đích (chẳng hạn như các thuộc tính tĩnh nếu hàm đích là một lớp). Ví dụTạo hàm ràng buộcViệc sử dụng đơn giản nhất của 4 là tạo ra một hàm, bất kể nó được gọi như thế nào, được gọi với một giá trị 5 cụ thể.Một sai lầm phổ biến đối với các lập trình viên JavaScript mới là trích xuất một phương thức từ một đối tượng, sau đó gọi chức năng đó và hy vọng nó sẽ sử dụng đối tượng gốc làm 5 (ví dụ: bằng cách sử dụng phương thức trong mã dựa trên gọi lại).Tuy nhiên, không có sự quan tâm đặc biệt, đối tượng ban đầu thường bị mất. Tạo hàm ràng buộc từ hàm, sử dụng đối tượng gốc, giải quyết gọn gàng vấn đề này:
Lưu ý: Nếu bạn chạy ví dụ này ở chế độ nghiêm ngặt (ví dụ: trong các mô -đun ECMAScript hoặc thông qua Chỉ thị 3 directive), the global 5 value will be undefined, causing the 5 call to fail.Nếu bạn chạy điều này trong một mô-đun Node CommonJS, phạm vi hàng đầu 5 sẽ chỉ vào 7 thay vì 8, bất kể ở chế độ nghiêm ngặt hay không. Tuy nhiên, trong các chức năng, tham chiếu của 5 không liên kết vẫn tuân theo quy tắc của " 8 trong không nghiêm ngặt, 0 trong nghiêm ngặt". Do đó, trong chế độ không nghiêm ngặt (mặc định), 5 sẽ trả về 0 vì 4 đang viết cho một đối tượng khác ( 7) từ những gì 6 đang đọc từ ( 8).Trên thực tế, một số "Phương thức" tích hợp cũng là những getters trả về các hàm ràng buộc-một ví dụ đáng chú ý là 8, khi được truy cập, trả về một hàm ràng buộc mà bạn có thể trực tiếp vượt qua như một cuộc gọi lại.
Các chức năng áp dụng một phầnViệc sử dụng đơn giản nhất tiếp theo của 4 là tạo một chức năng với các đối số ban đầu được chỉ định trước.Các đối số này (nếu có) tuân theo giá trị 5 được cung cấp và sau đó được chèn vào đầu các đối số được chuyển đến hàm đích, theo sau là bất kỳ đối số nào được chuyển đến hàm ràng buộc tại thời điểm nó được gọi.
Với setTimeout ()Theo mặc định, trong 1, từ khóa 5 sẽ được đặt thành 8, đó là 4 trong các trình duyệt. Khi làm việc với các phương thức lớp yêu cầu 5 để chỉ các phiên bản lớp, bạn có thể liên kết rõ ràng 5 với chức năng gọi lại, để duy trì thể hiện.
Bạn cũng có thể sử dụng các chức năng mũi tên cho mục đích này.
Các chức năng ràng buộc được sử dụng làm hàm tạoCác chức năng ràng buộc được tự động phù hợp để sử dụng với toán tử 1 để xây dựng các phiên bản mới được tạo bởi hàm đích. Khi một hàm ràng buộc được sử dụng để xây dựng một giá trị, 5 được cung cấp bị bỏ qua. Tuy nhiên, các đối số được cung cấp vẫn được chuẩn bị cho cuộc gọi xây dựng.
Lưu ý rằng bạn không cần phải làm bất cứ điều gì đặc biệt để tạo chức năng ràng buộc để sử dụng với 1. 7, 1, 5, v.v ... Tất cả đều hoạt động như mong đợi, như thể hàm tạo không bao giờ bị ràng buộc. Sự khác biệt duy nhất là nó không còn có thể được sử dụng cho 0.Hệ quả là bạn không cần phải làm bất cứ điều gì đặc biệt để tạo chức năng ràng buộc để được gọi rõ ràng, ngay cả khi bạn muốn yêu cầu hàm ràng buộc chỉ được gọi bằng cách sử dụng 1. Nếu bạn gọi nó mà không có 1, ràng buộc 5 đột nhiên không bị bỏ qua. 0Nếu bạn muốn hạn chế chức năng ràng buộc chỉ được gọi bằng 1 hoặc chỉ được gọi mà không có 1, chức năng đích phải thực thi hạn chế đó, chẳng hạn như bằng cách kiểm tra 9 hoặc sử dụng lớp.Các lớp ràng buộcSử dụng 4 trên các lớp bảo tồn hầu hết các ngữ nghĩa của lớp, ngoại trừ tất cả các thuộc tính riêng của lớp hiện tại đều bị mất. Tuy nhiên, vì chuỗi nguyên mẫu được bảo tồn, bạn vẫn có thể truy cập các thuộc tính tĩnh được kế thừa từ lớp cha. 1Chuyển đổi phương pháp thành các chức năng tiện ích 4 cũng hữu ích trong các trường hợp bạn muốn chuyển đổi một phương thức yêu cầu giá trị 5 cụ thể thành hàm tiện ích đơn giản chấp nhận tham số 5 trước đó là tham số bình thường.Lấy 04, ví dụ, mà bạn muốn sử dụng để chuyển đổi một đối tượng giống như mảng thành một mảng thực. Bạn có thể tạo một lối tắt như thế này: 2Với 4, điều này có thể được đơn giản hóa.Trong phần sau của mã, 06 là hàm ràng buộc với 07, với giá trị 5 được đặt thành 04. Điều này có nghĩa là các cuộc gọi 10 bổ sung có thể được loại bỏ: 3Thông số kỹ thuật
Tính tương thích của trình duyệt webBảng BCD chỉ tải trong trình duyệt Xem thêmCuộc gọi áp dụng và liên kết trong JavaScript là gì?Áp dụng rất giống với hàm cuộc gọi. Sự khác biệt duy nhất là trong áp dụng, bạn có thể chuyển một mảng làm danh sách đối số. BIND là một hàm giúp bạn tạo một chức năng khác mà bạn có thể thực hiện sau này với bối cảnh mới của điều này được cung cấp.
Sự khác biệt giữa cuộc gọi và ràng buộc là gì?Bản tóm tắt.Gọi: Liên kết giá trị này, gọi hàm và cho phép bạn vượt qua danh sách các đối số.Áp dụng: Liên kết giá trị này, gọi hàm và cho phép bạn chuyển các đối số dưới dạng một mảng.BIND: Liên kết giá trị này, trả về một hàm mới và cho phép bạn chuyển trong danh sách các đối số.
Call () trong javascript là gì?Phương thức Call () là phương thức JavaScript được xác định trước.Nó có thể được sử dụng để gọi (gọi) một phương thức với một đối tượng chủ sở hữu làm đối số (tham số).Với call (), một đối tượng có thể sử dụng một phương thức thuộc về một đối tượng khác.a predefined JavaScript method. It can be used to invoke (call) a method with an owner object as an argument (parameter). With call() , an object can use a method belonging to another object.
Chúng ta có thể sử dụng Call áp dụng liên kết trên các đối tượng JavaScript không?Trong JavaScript, bạn có thể sử dụng các phương thức CALL (), ÁP DỤNG () và BIND () để kết hợp một hàm với một đối tượng.Bằng cách này, bạn có thể gọi hàm trên đối tượng như thể nó thuộc về nó.Cuộc gọi () và Ứng dụng () là các phương thức rất giống nhau.Cả hai thực thi chức năng ràng buộc trên đối tượng ngay lập tức.you can use call() , apply() , and bind() methods to couple a function with an object. This way you can call the function on the object as if it belonged to it. The call() and apply() are very similar methods. They both execute the bound function on the object immediately. |