JavaScript是一种强大而灵活的语言,可让您使用三种方法来操纵功能的上下文:呼叫,应用和绑定。这些方法可用于更改this
inside a函数的值,该函数确定函数运行的对象。在本文中,我们将解释如何使用简单示例在JavaScript中使用呼叫,应用和绑定。
什么是呼叫,申请和绑定?
调用,应用和绑定是属于JavaScript 中函数原型对象的三种方法。它们允许您更改函数内部的值并使用不同的参数执行它。
称呼
呼叫方法用于调用具有给定值的函数,并将参数称为逗号分隔的值。
let person1 = {
firstName: 'Karan',
lastName: 'Sharma'
};
let person2 = {
firstName: 'Rakesh',
lastName: 'Verma'
};
function sayHello(greeting) {
console.log(greeting + ' ' + this.firstName + ' ' + this.lastName);
}
sayHello.call(person1, 'Hello'); // Hello Karan Sharma
sayHello.call(person2, 'Hello'); // Hello Rakesh Verma
在此示例中,我们使用呼叫方法将sayhello函数与人对象作为其值和字符串作为参数来调用sayhello函数。这样,我们可以更改功能的上下文并访问函数内部对象的属性。
当您要执行具有不同的值和固定数量参数的函数时,呼叫方法很有用。您也可以使用呼叫方法从其他对象或类借用方法。
申请
应用方法非常与呼叫方法相似,只是它将参数作为数组(或类似数组的对象)而不是逗号分隔的值。例如:
let person1 = {
firstName: 'Karan',
lastName: 'Sharma'
};
let person2 = {
firstName: 'Rakesh',
lastName: 'Verma'
};
function sayHello(greeting) {
console.log(greeting + ' ' + this.firstName + ' ' + this.lastName);
}
sayHello.apply(person1, ['Hello']); // Hello Karan Sharma
sayHello.apply(person2, ['Hello']); // Hello Rakesh Verma
绑定
绑定方法与调用不同,并应用方法是因为它不会立即执行该函数,而是返回具有给定的this
Value和参数的新功能。例如:
通过使用bind(),您可以使用预定义的上下文创建新功能,然后可以使用所需的参数调用。
let person1 = {
firstName: 'Karan',
lastName: 'Sharma'
};
let person2 = {
firstName: 'Rakesh',
lastName: 'Verma'
};
function sayHello(greeting) {
console.log(greeting + ' ' + this.firstName + ' ' + this.lastName);
}
let sayHelloToPerson1 = sayHello.bind(person1);
let sayHelloToPerson2 = sayHello.bind(person2);
sayHelloToPerson1('Hello'); // Hello Karan Sharma
sayHelloToPerson2('Hello'); // Hello Rakesh Verma
如何解决这个面试问题?
通常在JavaScript访谈中问这个问题,以测试您对JavaScript功能的理解,以及如何使用呼叫,应用和绑定来操纵其上下文。这里有一些有关如何解决这个问题的提示:
- 解释呼叫,应用和绑定其语法和行为之间的区别。
- 举例说明如何使用不同参数和上下文的每种方法。
- 提及这些方法有用或必要的一些用例或方案。
- 将这些方法与更改其价值的其他方式进行比较和对比,例如箭头函数或全局对象。
- 展示您对JavaScript中它的工作方式及其如何取决于执行上下文的了解。
概括
在本文中,我们学习了如何使用简单示例在JavaScript中使用呼叫,应用和绑定。当被问及时,我们还提供了一些有关如何解决这个面试问题的提示。这是要记住的一些关键点:
- 呼叫,应用和绑定是三种方法,可以使您在功能中更改其值并使用不同的参数执行。
- 呼叫并应用给定的值立即执行函数,并分别以逗号分隔值或数组为单位。
- bind返回具有给定的值的新功能和以后可以调用的参数。
- 这些方法可用于更改函数上下文并使用固定上下文创建新功能。 我们希望您发现这篇文章有帮助和信息丰富。