Chúng tôi có thể sử dụng liên kết áp dụng cuộc gọi trên các đối tượng JavaScript không?

Trong bài đăng này, chúng ta sẽ thảo luận về sự khác biệt giữa các phương thức call(), apply()bind() của các hàm JavaScript với các ví dụ đơn giản. Vì các hàm cũng là Đối tượng trong JavaScript, 3 phương thức này được sử dụng để kiểm soát việc gọi hàm. call()apply() đã được giới thiệu trong ECMAScript 3 trong khi bind() đã được thêm vào như một phần của ECMAScript 5

công dụng

Bạn có thể sử dụng call()/apply() để gọi hàm ngay lập tức. bind() trả về một hàm bị ràng buộc, khi được thực hiện sau đó, sẽ có ngữ cảnh chính xác ("cái này") để gọi hàm ban đầu. Vì vậy, bind() có thể được sử dụng khi chức năng cần được gọi sau trong các sự kiện nhất định khi nó hữu ích

Để hiểu về “this” trong JavaScript, hãy đọc Hiểu về “This” trong JavaScript

call() hoặc

//Use .bind() javascript

var obj = {name:"Niladri"};

var greeting = function(a,b,c){
return "welcome "+this.name+" to "+a+" "+b+" in "+c;
};

//creates a bound function that has same body and parameters
var bound = greeting.bind(obj);


console.dir(bound); ///returns a function

console.log("Output using .bind() below ");

console.log(bound("Newtown","KOLKATA","WB")); //call the bound function

/* the output will be
Output using .bind() below
welcome Niladri to Newtown KOLKATA in WB */
3

Kiểm tra mẫu mã dưới đây cho call()

//Use .bind() javascript

var obj = {name:"Niladri"};

var greeting = function(a,b,c){
return "welcome "+this.name+" to "+a+" "+b+" in "+c;
};

//creates a bound function that has same body and parameters
var bound = greeting.bind(obj);


console.dir(bound); ///returns a function

console.log("Output using .bind() below ");

console.log(bound("Newtown","KOLKATA","WB")); //call the bound function

/* the output will be
Output using .bind() below
welcome Niladri to Newtown KOLKATA in WB */
5

Tham số đầu tiên trong phương thức call() đặt giá trị "this", là đối tượng mà hàm được gọi trên đó. Trong trường hợp này, đó là đối tượng "obj" ở trên

Phần còn lại của các tham số là đối số cho chức năng thực tế

apply() hoặc

//Use .bind() javascript

var obj = {name:"Niladri"};

var greeting = function(a,b,c){
return "welcome "+this.name+" to "+a+" "+b+" in "+c;
};

//creates a bound function that has same body and parameters
var bound = greeting.bind(obj);


console.dir(bound); ///returns a function

console.log("Output using .bind() below ");

console.log(bound("Newtown","KOLKATA","WB")); //call the bound function

/* the output will be
Output using .bind() below
welcome Niladri to Newtown KOLKATA in WB */
8

Kiểm tra mẫu mã dưới đây cho apply()

//Demo with javascript .apply()

var obj = {name:"Niladri"};

var greeting = function(a,b,c){
return "welcome "+this.name+" to "+a+" "+b+" in "+c;
};

// array of arguments to the actual function
var args = ["Newtown","KOLKATA","WB"];
console.log("Output using .apply() below ")
console.log(greeting.apply(obj,args));

/* The output will be
Output using .apply() below
welcome Niladri to Newtown KOLKATA in WB */

Tương tự như phương thức call(), tham số đầu tiên trong phương thức apply() đặt giá trị "this" là đối tượng mà hàm được gọi. Trong trường hợp này, đó là đối tượng "obj" ở trên. Sự khác biệt duy nhất của apply() với phương thức call() là tham số thứ hai của phương thức apply() chấp nhận các đối số của hàm thực dưới dạng một mảng

bind() hoặc call()6

Kiểm tra mẫu mã dưới đây cho bind()

//Use .bind() javascript

var obj = {name:"Niladri"};

var greeting = function(a,b,c){
return "welcome "+this.name+" to "+a+" "+b+" in "+c;
};

//creates a bound function that has same body and parameters
var bound = greeting.bind(obj);


console.dir(bound); ///returns a function

console.log("Output using .bind() below ");

console.log(bound("Newtown","KOLKATA","WB")); //call the bound function

/* the output will be
Output using .bind() below
welcome Niladri to Newtown KOLKATA in WB */

Trong mẫu mã trên cho bind(), chúng tôi đang trả về một hàm bị ràng buộc với ngữ cảnh sẽ được gọi sau. Chúng ta có thể thấy hàm ràng buộc trong bảng điều khiển như bên dưới

Hàm giới hạn trong bảng điều khiển

Tham số đầu tiên của phương thức bind() đặt giá trị của “this” trong hàm đích khi hàm liên kết được gọi. Xin lưu ý rằng giá trị cho tham số đầu tiên bị bỏ qua nếu hàm liên kết được xây dựng bằng toán tử “mới”.
Phần còn lại của các tham số theo sau tham số đầu tiên trong phương thức bind() được truyền dưới dạng các đối số được thêm vào trước các đối số được cung cấp cho hàm liên kết khi gọi hàm đích.

Đó là tất cả mọi người

Đó là tất cả cho bây giờ. Cảm ơn bạn đã đọc và tôi hy vọng bài đăng này sẽ hữu ích cho những người mới bắt đầu đang gặp phải các vấn đề liên quan đến các phương pháp JavaScript apply(), call()bind()

Khi nào thì sử dụng bind() call() và apply() trong JavaScript?

Định nghĩa .
Gọi là một chức năng giúp bạn thay đổi ngữ cảnh của chức năng gọi. .
Áp dụng rất giống với chức năng gọi. .
Bind là một chức năng 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 chức năng này được cung cấp

Nơi sử dụng cuộc gọi và áp dụng trong JavaScript?

Sự khác biệt giữa call() và apply() . Phương thức call() nhận các đối số riêng . Phương thức apply() nhận các đối số dưới dạng một mảng. Phương thức apply() rất tiện dụng nếu bạn muốn sử dụng một mảng thay vì một danh sách đối số.

Đặc điểm chung của call() apply() và bind() là gì?

Các phương thức gọi, liên kết và áp dụng có thể được sử dụng để đặt từ khóa this độc lập với cách gọi hàm . Phương thức bind tạo một bản sao của hàm và thiết lập từ khóa this, trong khi phương thức call và apply thiết lập từ khóa this và gọi hàm ngay lập tức.

Sự khác biệt giữa áp dụng BIND và gọi là gì?

Tóm tắt. gọi. liên kết giá trị này, gọi hàm và cho phép bạn chuyển danh sách đối số. áp dụng. liên kết giá trị này, gọi hàm và cho phép bạn truyền đối số dưới dạng một mảng. trói buộc. liên kết giá trị này, trả về một hàm mới và cho phép bạn chuyển vào danh sách các đối số.