解释 JavaScript 中的 call() 和 apply() 方法
Call() 方法: call 方法主要用于调用不同this对象的函数。在 JavaScript 中, this指的是一个对象。这取决于我们如何调用特定函数。在全局范围内, this指的是全局对象window 。内部函数this也指全局对象窗口。
在严格模式下,当我们使用任何函数时, this指的是未定义的。在诸如 call 之类的函数中, this 可以引用不同的对象。借助call方法,我们可以调用具有不同对象的特定函数。
句法:
object.objectMethod.call( objectInstance, arguments )
参数:它需要两个参数:
- ObjectInstance:这是我们要明确使用的对象
- 参数:我们要传递给调用函数的参数
示例 1:
Javascript
Javascript
Javascript
Javascript
Javascript
输出:
First_name Last_name
很明显,因为我们使用对象 obj 调用 printName()函数,所以this应该引用对象 obj。在对象 obj 中,我们有 firstName = “First_name” 和 lastName = “Last_name”,所以输出是 “First_name Last_name”。
示例 2:众所周知,我们可以使用不同的对象调用特定的函数。所以我们也可以用不同的对象调用 printName函数。
Javascript
输出:
Sachin Tendulkar
在这种情况下,我们使用 call 方法来调用对象 obj2 的函数。所以在这种情况下,这将是指对象obj2 。因为这取决于我们实际调用函数的方式。在这种情况下, this不会引用全局对象window ,而是引用对象obj2。
使用调用方法传递参数:我们也可以将参数传递给调用函数。
示例 3:
Javascript
输出:
Sachin Tendulkar Cricketer India
当我们使用 call 方法传递参数时,我们传递以逗号(,)分隔的参数。
Apply() 方法:就像调用方法一样,我们也可以将函数绑定到任何对象。使用 apply() 方法,我们还可以调用具有不同对象的给定函数。
句法:
object.objectMethod.apply(objectInstance, arrayOfArguments)
参数:它需要两个参数:
- ObjectInstance :这是我们要明确使用的对象
- 参数:我们要传递给调用函数的参数
Javascript
输出:
Sachin Tendulkar
使用 apply 方法传递参数:我们也可以使用 apply函数传递参数。
Javascript
输出:
Sachin Tendulkar Cricketer India