js学习笔记60——call和apply
call()和apply()是函数对象的方法,需要通过函数对象来调用。
语法:函数名.clall(),函数名.apply()
<script>
function fun(){
console.log("我是fun");
}
fun();
fun.call();
fun.apply();
</script>
从上图可以看到,这三个好像没啥区别。
不同的地方:call和apply可以将一个对象指定为第一个参数。
<script>
function fun(){
console.log(this);
}
fun();
var obj={name:"我是obj"};
fun.call(obj);
fun.apply(obj);
</script>
此时,这个参数成为函数执行时的this。
如果函数fun有参数,要怎么传?
对于call:
<script>
function fun(a,b){
console.log(a);
console.log(b);
console.log(this);
}
var obj={name:"我是obj"};
fun.call(obj,1,2);
</script>
对于apply,这样写会报错,得怎么写?
得封装到一个数组中。
<script>
function fun(a,b){
console.log(a);
console.log(b);
console.log(this);
}
var obj={name:"我是obj"};
fun.apply(obj,[1,2]);
</script>