javascript call和apply
时间: 2023-04-28 22:04:00 浏览: 79
JavaScript中的call和apply是两个函数方法,都可以用来调用函数并设置函数内部的this指向。
call方法的语法是:function.call(thisArg, arg1, arg2, ...)
apply方法的语法是:function.apply(thisArg, [argsArray])
其中,thisArg是要设置的this指向的对象,arg1, arg2, ...是要传递给函数的参数,argsArray是一个数组,包含要传递给函数的参数。
两者的区别在于传递参数的方式不同,call方法是将参数一个一个传递,而apply方法是将参数放在一个数组中传递。
相关问题
js call和apply
在 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 参数。两种方法的输出结果都是一样的。
call 和 apply区别
`call` 和 `apply` 都可以用来调用函数并且改变函数内部的 `this` 指向。它们的区别在于传递参数的方式不同。
`call` 方法接收一个参数列表,第一个参数是要改变 `this` 指向的对象,后面的参数是要传递给函数的参数,参数之间用逗号分隔。
```javascript
function sayHello() {
console.log(`Hello ${this.name}`);
}
const person = { name: 'John' };
sayHello.call(person); // 输出:Hello John
```
`apply` 方法接收两个参数,第一个参数是要改变 `this` 指向的对象,第二个参数是一个数组或类数组对象,数组中的元素是要传递给函数的参数。
```javascript
function sayHello(greeting) {
console.log(`${greeting} ${this.name}`);
}
const person = { name: 'John' };
const args = ['Hello'];
sayHello.apply(person, args); // 输出:Hello John
```
总的来说,它们的作用是一样的,只是传递参数的方式不同。