开篇寄语
可能在练习 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 中还有无数其他核心概念,你应该掌握这些概念,才能成为最高效的程序员。
- 我的微信
- 微信扫一扫加好友
- 我的微信公众号
- 扫描关注公众号