js call和apply
时间: 2024-01-06 14:03:35 浏览: 20
在 JavaScript 中,call 和 apply 是用于调用函数的两个方法。它们的作用是改变函数内部 this 指向的对象,并且可以传递参数。
call 和 apply 的区别在于传递参数的方式不同。call 可以接收多个参数,第一个参数是要绑定的 this 对象,后面的参数是函数调用时的参数。apply 只接收两个参数,第一个参数是要绑定的 this 对象,第二个参数是一个数组,数组中的元素就是函数调用时的参数。
举个例子:
```javascript
var person = {
name: '张三',
sayHello: function(age) {
console.log(`我叫${this.name},今年${age}岁了。`);
}
};
person.sayHello(18); // 输出:我叫张三,今年18岁了。
var anotherPerson = {
name: '李四'
};
person.sayHello.call(anotherPerson, 20); // 输出:我叫李四,今年20岁了。
person.sayHello.apply(anotherPerson, [20]); // 输出:我叫李四,今年20岁了。
```
在上面的例子中,我们定义了一个 person 对象,里面有一个 sayHello 方法,这个方法输出一个字符串,其中包含对象的 name 属性和传入的 age 参数。然后我们通过 call 和 apply 方法,将 sayHello 方法的 this 绑定到了 anotherPerson 对象上,并且传递了一个 age 参数。两种方法的输出结果都是一样的。