函数的方法call和apply

<script>
//函数也是对象,所以函数也有方法
function fun(a,b){
console.log("a = "+a);
console.log("b = "+b);
//alert(this.name )
}
/*
*call()和apply() ------这两个是函数对象的方法
* - 这两个方法都是函数对象的方法,需要通过函数对象来调用
* - 当对函数调用call()he 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 obj = {
name:"obj",
sayName:function(){
alert(this.name);
}
};
var obj2 = {name:"obj2"};
//fun();为返回值,去掉括号才是对象
/* fun.call();//调用fun的call方法
fun.apply();
fun(); */

//fun.call(obj);//object
// fun.apply(obj);
//fun();//以函数形式调取this就是window

//obj.sayName.apply(obj2);//使用这种方式可以指定函数执行的this,参数是谁this就是谁
</script>
posted @ 2022-05-18 07:46  LiLime  阅读(36)  评论(0)    收藏  举报