- call()
- apply()
- 这两个方法都是函数对象的方法需要通过函数对象来调用
- 通过两个方法可以直接调用函数,并且可以通过第一个实参来指定函数中this
- 不同的是call是直接传递函数的实参而apply需要将实参封装到一个数组中传递
function fun(a,b) { console.log("a = "+a); console.log("b = "+b); //alert(this); } var obj = { name: "obj", sayName:function(){ alert(this.name); } }; /* * call()和apply() * - 这两个方法都是函数对象的方法,需要通过函数对象来调用 * - 当对函数调用call()和apply()都会调用函数执行 * - 在调用call()和apply()可以将一个对象指定为第一个参数 * 此时这个对象将会成为函数执行时的this * - call()方法可以将实参在对象之后依次传递 * - apply()方法需要将实参封装到一个数组中统一传递 * * - this的情况: * 1.以函数形式调用时,this永远都是window * 2.以方法的形式调用时,this是调用方法的对象 * 3.以构造函数的形式调用时,this是新创建的那个对象 * 4.使用call和apply调用时,this是指定的那个对象 */ //fun.call(obj,2,3); fun.apply(obj,[2,3]); var obj2 = { name: "obj2" }; /*fun.apply(); fun.call(); fun();*/ //fun.call(obj); //fun.apply(obj); //fun(); //obj.sayName.apply(obj2);
浙公网安备 33010602011771号