所有这些方法背后的主要概念是函数挖掘。
函数借用允许我们在不同的对象上使用一个对象的方法,而不必复制该方法并在两个不同的地方维护它。它是通过使用。调用(),。Apply(),或。Bind(),所有这些方法的存在都是为了显式地在我们所借用的方法上设置此值
Call立即调用函数,并允许您逐个传入参数
一个
Apply立即调用函数,并允许传入参数
作为一个数组。
Bind返回一个新函数,您可以通过调用函数随时调用/调用它。
下面是所有这些方法的示例
let name = {
firstname : "Arham",
lastname : "Chowdhury",
}
printFullName = function(hometown,company){
console.log(this.firstname + " " + this.lastname +", " + hometown + ", " + company)
}
CALL
第一个参数,例如调用方法中的name总是一个引用
To (this)变量和后者将是函数变量
printFullName.call(name,"Mumbai","Taufa"); //Arham Chowdhury, Mumbai, Taufa
应用
Apply方法与call方法相同
唯一的区别是,函数参数是在数组列表中传递的
printFullName.apply(name, ["Mumbai","Taufa"]); //Arham Chowdhury, Mumbai, Taufa
BIND
Bind方法与call方法相同,不同之处在于,Bind返回一个可以稍后通过调用它来使用的函数(不立即调用它)。
let printMyNAme = printFullName.bind(name,"Mumbai","Taufa");
printMyNAme(); //Arham Chowdhury, Mumbai, Taufa
printMyNAme()是调用该函数的函数
下面是jsfiddle的链接
https://codepen.io/Arham11/pen/vYNqExp