Разница между вызовом, привязкой и применением в javascript.
Call : (заимствование функций) =›заимствовать функции у других объектов и использовать их с данными какого-либо другого объекта.
call(reference)
Код:
let name = { firstName : "Siddharth", lastName : "Mishra", printFullName:function(){ console.log(this.firstName +" "+ this.lastName); } } name.printFullName(); // Siddharth Mishra // Now I want to use the function printFullName in other object. let newName = { firstName: "Saurabh", lastName: "Shukla" } name.printFullName.call(newName);//Saurabh Shukla // So here newName object borrowed the function printFullName from the name.
Код: (когда у нас есть дополнительный параметр)
let name = { firstName : "Siddharth", lastName : "Mishra", } let printFullName = function(hometown, state){ console.log(this.firstName +" "+ this.lastName + " "+hometown +" "+state); } printFullName.call(name, "Bhadedoo", "Uttar Pradesh"); // Siddharth Mishra Bhadedoo Uttar Pradesh // here we passed extra parameter as a second argument & third argument where // 1st argument is a reference let newName = { firstName: "Saurabh", lastName: "Shukla" } printFullName.call(newName, "Noida", "Uttar Pradesh");//Saurabh Shukla Noida Uttar Pradesh
Применить. Единственная разница между вызовом и применением заключается в способе передачи аргументов. В call() мы передаем дополнительные параметры в виде строк, разделенных запятыми, но в apply() мы передаем эти параметры в виде массива.
Код: (как позвонить, так и подать заявку)
let name = { firstName : "Siddharth", lastName : "Mishra", } let printFullName = function(hometown, state){ console.log(this.firstName +" "+ this.lastName + " "+hometown +" "+state); } printFullName.call(name, "Bhadedoo", "Uttar Pradesh"); // Siddharth Mishra Bhadedoo Uttar Pradesh // here we passed extra parameter as a second argument & third argument where // 1st argument is a reference let newName = { firstName: "Saurabh", lastName: "Shukla" } printFullName.call(newName, "Noida", "Uttar Pradesh");//Saurabh Shukla Noida Uttar Pradesh // here we called apply method extra parameters are in array printFullName.apply(newName, ["Noida", "Uttar Pradesh"]); //Saurabh Shukla Noida Uttar Pradesh
Bind:метод bind() выглядит точно так же, как метод call(), но единственное отличие состоит в том, что вместо прямого вызова этого метода, например, printFullName.call(newName, «Noida», «Uttar Pradesh»),метод bind() связывает этот метод printFullNameс объектом и возвращает нам копию этой функции.
Code:(bind)
let name = { firstName : "Siddharth", lastName : "Mishra", } let printFullName = function(hometown, state){ console.log(this.firstName +" "+ this.lastName + " "+hometown +" "+state); } let myName = printFullName.bind(name, "Noida", "Uttar Pradesh");//Saurabh Shukla Noida Uttar Pradesh // Here the bind method will create a copy of printFullName and bind it with // newName object and it will return a function (which can be called later). // output // ƒ (hometown, state){ // console.log(this.firstName +" "+ this.lastName + " "+hometown +" "+state); // } // Here we can see that it returns the function not values and now if we call // myname() then we get our results. myName(); // output // Siddharth Mishra Noida Uttar Pradesh