如何在 JavaScript 中使用 Call 、Apply 和 Bind

已收录   阅读次数: 600
2022-01-3014:41:14 发表评论
摘要

可能在练习 JavaScript 时遇到过各种内置函数,例如用于数组和字符串的函数。虽然您可能会在日常编程任务中使用这些更常用的方法,但也可以将其他方法用于特殊目的。JavaScript 的 call()、apply() 和 bind() 是一些具有特殊用例的方法,让我们来学习一下如何使用它们……

分享至:
如何在 JavaScript 中使用 Call 、Apply 和 Bind

开篇寄语

可能在练习 JavaScript 时遇到过各种内置函数,例如用于数组和字符串的函数。虽然您可能会在日常编程任务中使用这些更常用的方法,但也可以将其他方法用于特殊目的。JavaScript 的 call()、apply() 和 bind() 是一些具有特殊用例的方法,让我们来学习一下如何使用它们。

内容详情

1. call()

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

看一个例子:

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()

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()

call()、apply() 和 bind() 函数很重要。 JavaScript 中还有无数其他核心概念,你应该掌握这些概念,才能成为最高效的程序员。

  • 我的微信
  • 微信扫一扫加好友
  • weinxin
  • 我的微信公众号
  • 扫描关注公众号
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: