js function中的apply和call的理解

js中的function 也是一个对象,都是由Function构造函数构造出来的。每个function都有两个方法,apply&&call。

工作中见见到这两个的影子,一直没深入研究,今天索性花点功夫研究下,还真是很有收获。

首先,function是一个指向Function对象,函数名是一个指向函数的指针。那么在函数体内,就会有一个作用域,即this关键字。

先看一段代码:

<script>
c = {
b: 'b'
}

function a() {
console.log(this)
}

function b(d) {
a.call(c, d);
}
b();
</script>

这个时候运行b() 这个时候 这个this指向的就是c这个对象。

为什么是这样子那,call和apply都有改变作用域的能力,他俩的第一个参数都是传入的作用域,不同点是call要传入一个或多个参数,apply可以传入一个数组,而且不必一一传入参数,这样看来,apply应该会用的比较多一些。

原文地址:https://www.cnblogs.com/Running-cqw/p/5339967.html