网站搜索

如何在 JavaScript 中使用调用、应用和绑定


JavaScript call()、apply() 和 bind() 在 Web 开发面试中很有可能出现。准备好了吗?

在练习 JavaScript 时,您可能遇到过各种内置函数,例如数组和字符串的函数。虽然您可能会在日常编程任务中使用这些更常见的方法,但其他方法也可用于特殊目的。JavaScript 的 call()、apply()、和 bind() 是一些此类方法,它们有其特殊的用例,通常用于在编码面试中测试您的 JavaScript 知识。让我们仔细看看如何使用它们。

1. 调用()

call() 允许为另一个对象分配和调用属于一个对象的函数或方法。您可以使用 this 关键字引用对象的值。

查看这个 call() 示例。

let obj = {
  name:"John",
  surname:"Doe",
  getFullName: function(){
    console.log(this.name+" "+this.surname);
  }
}
obj.getFullName();

对象 obj 有一个名为 getFullName() 的函数,用于打印人的全名。现在,如果您想将 getFullName() 与具有不同值的不同对象一起使用,则可以使用 call() 函数来实现。

const obj2 = {
   name:"Jane",
   surname:"Doe"
 }
obj.getFullName.call(obj2);

您还可以在 call() 函数中与对象一起传递不同的参数。

let obj = {
 name:"John",
 surname:"Doe",
 getFullName: function(age, gender){
   console.log(this.name+" "+this.surname+" "+age+" "+gender);
}
obj.getFullName.call(obj2, 21, "female");

2.申请()

apply() 函数的工作方式与 call() 函数类似。 call() 和 apply() 函数之间的唯一区别是您可以在数组中传递多个参数并使用它们。

这是一个 apply() 示例:

const obj = {
 name:"John",
 surname:"Doe",
 getFullName: function(age, gender){
    console.log(this.name+" "+this.surname+" "+age+" "+gender);
  }
}
obj.getFullName.apply(obj2, [21, "female"]);
 

3. 绑定()

bind() 返回函数的精确副本并将其与对象绑定。该方法用于绑定并保留方法的副本以供以后使用。您可以随时通过调用来使用该函数。

这是一个 bind() 示例:

const obj = {
   name:"John",
   surname:"Jane",
   getFullName: function(){
     console.log(this.name+this.surname);
   }
 }
const obj2 = {
   name:"Jane",
   surname:"Doe"
 }
let func = obj.getFullName.bind(obj2);
func();

永远不要停止学习 JavaScript

在准备 JavaScript 面试时,call()、apply() 和 bind() 函数非常重要。 JavaScript 中还有无数其他核心概念,您应该掌握这些概念才能成为最高效的程序员;为什么不从数组方法开始呢?

相关文章: