apply() 方法调用一个函数, 其具有一个指定的 this 值,以及作为一个数组(或类似数组的对象)提供的参数。
注意:该方法的作用和 call() 方法类似,只有一个区别,就是 call() 方法接受的是若干个参数的列表,而 apply() 方法接受的是一个包含多个参数的数组。
语法:
fun.apply(thisArg, [argsArray])
<script>
function f1(a, b) {
console.log(a + b);
console.log(this);
}
f1.apply(null, [100, 200]);
</script>
/
参数:
1. thisArg
2. argsArray
/
apply() 与 call() 非常相似,不同之处在于提供参数的方式。
apply() 使用参数数组而不是一组参数列表。例如:
使用apply和call改变函数中this的指向
function f1(x,y) {
console.log("这个函数是window对象的一个方法:"+(x+y)+this.sex);
}
window.f1(10,20);
//obj是一个对象
var obj={
age:10,
sex:"男"
};
window.f1.apply(obj,[10,20]);
window.f1.call(obj,10,20);
console.dir(obj);
通过apply和call改变原型方法中this的指向
function Person(age,sex) {
this.age=age;
this.sex=sex;
}
//通过原型添加方法
Person.prototype.sayHi=function (x,y) {
console.log("您好啊:"+this.sex);
return 1000;
};
var per=new Person(10,"男");
per.sayHi();
console.log("==============");
function Student(name,sex) {
this.name=name;
this.sex=sex;
}
var stu=new Student("小明","人妖");
var r1=per.sayHi.apply(stu,[10,20]);
var r2=per.sayHi.call(stu,10,20);
console.log(r1);
console.log(r2);