call() 和 apply() 方法

call() 和 apply() 方法的作用是,改变函数 this 的指向并调用。

// call() 语法:
call([thisObj[,arg1[, arg2[,   [,.argN]]]]])
// 参数一: 改变 this 指向后指向的对象
// 参数二: 为函数传递的参数值

// apply() 语法:
apply([thisObj[, argArray]])
// 参数一: 改变 this 指向后指向的对象
// 参数二: 为函数传递的参数值数组

// 示例
var str = 'window'
var obj = {
    str: 'obj'
}

function fun() {
    console.log(this.str);
}
function fun2(a, b) {
    console.log(this.str);
    console.log(a + b)
}

fun()
fun.call()
fun.call(obj)
fun2.call(obj, 1, 1)
fun2.apply(obj, [2, 2])

// 运行结果
// window
// window
// obj
// obj
// 2
// obj
// 4

参数个数确定时使用 call() 方法 ,参数个数不确定时使用 apply() 方法。


学习笔记,根据自己理解整理,不对的地方望指正,感谢!

猜你喜欢

转载自blog.csdn.net/username_xu/article/details/80134772