JavaScript call、apply 和 bind 的区别
今天我们将解释 apply()
、call()
和 bind()
方法之间的区别。使用这些 JavaScript 技术,你可以修改给定函数的 this
的值。
JavaScript 中的 function.call()
方法
function.call()
方法调用该函数并允许你使用逗号一次发送一个参数。这里提到的例子,this 指的是 person 对象,而 this.name
是 worker1
和 worker2
的名称。
例子:
let worker1 = {name: 'Oli', email: 'oli@gmail.com'};
let worker2 = {name: 'Kp', email: 'kp@hotmail.com'};
function invite(text) {
console.log(`${text} ${this.name}`);
}
invite.call(worker1, 'Hello Upwork');
invite.call(worker2, 'Hello Upwork');
输出:
"Hello Upwork Oli"
"Hello Upwork Kp"
运行代码
JavaScript 中的 function.apply()
方法
你可以使用 function.apply()
方法调用具有提供的 this
值和作为数组提供的参数的函数。apply()
和 call()
方法相似,但不是单独的参数,而是将函数的参数作为数组。
例子:
let worker1 = {name: 'Oli', email: 'oli@gmail.com'};
let worker2 = {name: 'Kp', email: 'kp@hotmail.com'};
function invite(text, text2) {
console.log(`${text} ${this.name}, ${text2}`);
}
invite.apply(worker1, ['Hello', 'How are you?']);
invite.apply(worker2, ['Hello', 'How are you?']);
输出:
"Hello Oli, How are you?"
"Hello Kp, How are you?"
运行代码
JavaScript 中的 bind()
方法
bind()
方法创建了一个新函数,该函数接受此数组和任意数量的参数。当你想稍后使用特定上下文(例如事件)调用函数时,请使用它。
例子:
let worker1 = {name: 'Oli', email: 'leo@gmail.com'};
let worker2 = {name: 'Kp', email: 'nat@hotmail.com'};
function invite(text) {
console.log(`${text} ${this.name}`);
}
let helloOli = invite.bind(worker1);
let helloKp = invite.bind(worker2);
helloOli('Hello');
helloKp('Hello');
输出:
"Hello Oli"
"Hello Kp"
运行代码
以下示例是 Bind 实现。
例子:
Function.prototype.bind = function(context) {
var func = this;
return function() {
func.apply(context, arguments);
};
};
call
和 apply
是可以互换的。你可以选择是数组还是逗号分隔的参数列表更方便。Bind
和其他的不一样。
它每次都返回一个新函数。如示例所示,我们可以使用 Bind
来柯里化函数。
我们可以从一个简单的 hello 操作中创建一个 "helloOli"
或 "helloKp"
。当我们不知道它们何时会被触发但它们将在什么上下文中时,它可以用于事件。
相关文章
在 JavaScript 中闪烁文本
发布时间:2024/03/22 浏览次数:119 分类:JavaScript
-
本文将介绍如何通过窗口对象加载函数、onload 属性和使用 JavaScript 的 jQuery 约定来执行文本闪烁。
在 JavaScript 中更改页面
发布时间:2024/03/22 浏览次数:51 分类:JavaScript
-
这篇文章介绍了如何在 JavaScript 中使用 window.open() 和 window.location 更改页面。
在 JavaScript 中高亮显示文本
发布时间:2024/03/22 浏览次数:103 分类:JavaScript
-
本教程向我们展示了如何使用 JavaScript 高亮显示文本。将用于此目的的方法是 searchPrompt 方法和标记标记方法,将使用代码段详细说明。
在 JavaScript 中创建哔声
发布时间:2024/03/22 浏览次数:119 分类:JavaScript
-
JavaScript 不具有任何直接的方法或属性来警告哔声或在特定函数上产生任何声音。但是该任务可以通过添加音频源并使用 JavaScript 音频功能使用 HTML 标记来完成。