call()和apply(): 这两个万法都是函数对象的万法,需要通过函数对象来调用 当对函数调用call()和apply()都会调用函数执行 在调用call()和apply()可以将一个对象指定为第一个参数 此时这个对象将会成为函数执行时的this call()方法可以将实参在对象之后依次传递 apply()方法需要将实参封装到一个数组中统一传递
this的情况: 1.以函数形式调用时,this永远都是window 2.以方法的形式调用时, this是调用方法的对象 3.以构造函数的形式调用时,this是新创建的那个对象 4.使用call和apply调用时,this是指定的那个对象
例如: var obj = {} function add(a,b){ console.log(a+b); } add.call(obj,2,3); //输出5 add.apply(obj,[2,3]); //输出5 两者都是将obj作为第一个参数,实参则跟随在后面,在apply中注意要将实参放入到数组中!