目录
名词解释来源MDN
-
call()
call() 方法使用一个指定的 this 值和单独给出的一个或多个参数来调用一个函数。
首先需要搞明白,this的概念
与其他语言相比,函数的
this
关键字在 JavaScript 中的表现略有不同,此外,在严格模式和非严格模式之间也会有一些差别。在绝大多数情况下,函数的调用方式决定了
this
的值(运行时绑定)。this
不能在执行期间被赋值,并且在每次函数被调用时this
的值也可能会不同。ES5 引入了 bind 方法来设置函数的this
值,而不用考虑函数如何被调用的。ES2015 引入了箭头函数,箭头函数不提供自身的 this 绑定(this
的值将保持为闭合词法上下文的值)
在控制台中打印this
此时我们知道,this指向window:this==window,this可以使用window的所有方法
解释:定义了一个对象a,定义了一个Person方法,使用Person.call(a,"boy",20)调用Person()方法,并且赋值,由此可见,a就是要改变this指向的那个对象,后面两个是所传的参数。此时我们可以对比下this打印的值来做出判断
未使用call()之前的
使用call()之后
此时的this==a
-
apply()
apply() 方法调用一个具有给定this值的函数,以及以一个数组(或类数组对象)的形式提供的参数。
call()方法的作用和 apply() 方法类似,区别就是call()方法接受的是参数列表,而apply()方法接受的是一个参数数组。
-
bind()
bind() 方法创建一个新的函数,在 bind() 被调用时,这个新函数的 this 被指定为 bind() 的第一个参数,而其余参数将作为新函数的参数,供调用时使用