函数的方法——call()与apply()

it2026-04-24  3

函数也是对象,所以函数也有他们的方法! call()和apply()

1.这两个方法都是函数对象的方法,所以需要通过函数对象来调用 2.当对函数调用call()和apply(),都会调用函数执行 3.在调用call()和apply()可以将第一个对象指定为第一个参数 此时这个对象会成为函数执行时的this

function fun(){ alert('我是fun函数'); } fun;//函数对象 fun();//函数返回值 所以这里我们用fun.call(); fun.apply();来进行函数对象方法的调用 function fun(){ alert(this); } var obj = {}; fun(); //[object window] fun.call(obj); //[object,Object] fun.apply(obj); //[object,Object]

综上来看这两个方法是用来改变this指向,接着往下看

function fun(a,b){ console.log(a); console.log(b); } fun.call(obj); //undefined undefined fun.call(obj,2,3); fun.apply(obj,[2,3]); //当函数有参数时,参数obj后面可以跟实参,不同的是,call后面一个一个跟,apply后面需要跟数组

最后总结this的情况: 1.以函数形式调用时,this永远都是window 2.以方法形式调用时,this是调用方法的对象 3.以构造函数的形式调用时,this是新创建的那个对象 4.以call和apply调用时,this是指定的那个对象

最新回复(0)