文章目录
介绍
本文是在学习JS所做的学习笔记,所有笔记内容请看:JS学习笔记
函数的方法(apply 和call )
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script>
function fun(){
console.log(this);
}
function fun2(a,b){
console.log(a);
cosole.log(b);
}
var obj={
name:'obj',
sayName:function(){
alert(this.name)
}
};
var obj2={i
name:'obj',
}
1、call()和apply()
-这两个 方法都是函数对象的方法
当对函数调用call()和apply()都会调用函数的执行
// 都会调用函数
fun.call();
fun.apply();
2、在调用call()和apply()可以将一个对象指定为第一个参数
此时,这个对象将会成为我们函数执行时的this
用来修改函数执行时的上下文对象
// 如下,this指向自定义的对象obj
fun.call(obj);
fun.apply(obj);
3、call()方法可以将实参在对象之后依次传递
apply()方法需要将实参封装到数组中进行传递
// 如下,调用fun2()
fun2.call(obj,2,3);
fun2.apply(obj,[2,3])
4、this情况:
1.以函数形式调用时,this永远都是window
2.以方法的形式调用,this是调用方法的对象
3.以构造函数的形式调用,this是创建的那个对象
4.使用call()和apply()调用时,this就是指定的那个对象
obj.sayNam.apply(obj2)// 输出obj2
</script>
</head>
<body>
</body>