-
函数对象的方法 call()和apply()
-
- 这两个方法都是函数对象的方法,需要通过函数对象来调用
-
- 当对函数对象调用call()和apply()都会调用函数执行
-
- 在调用call和apply()可以调一个对象指定为第一个参数
-
- 那么此时这个对象将会称为函数执行的this (上下文对象)
-
fun() this是window
-
fun.call(obj) this就是obj
-
- call方法可以将我们实参放在第一个参数之后以此传递,第一个参数为上下文对象
-
- apply方法需要将实参封装到一个数组中统一传递
-
* */
function fun(a, b) {
console.log(a)
console.log(b)
}
var obj = {
name: ‘zjx’,
hs:function () {
console.log(this.name)
}
}
var obj2={
name: ‘zjx2’,
}
fun.call(obj2,1,2)
fun.apply(obj,[1,2]) //唯一的区别
/*
-
this的情况
-
- 以函数形式调用时,this永远指向window 函数()
-
- 以方法的形式调用时候,this是调用方法的对象 obj.函数
-
- 以构造函数形式调用时候,this是新创建的那个对象 obj=new 构造函数名字()
-
- 使用call和apply调用时候,this是指定第一个参数的对象 函数.call(第一个参数) 指定的上下文
- */