您的位置:首页 > 移动开发

实习项目中的知识点和经验总结(四):理解和使用事件绑定bind及bind、call、apply 改变函数中this的指向

2020-08-04 14:41 901 查看

call

call() 方法使用一个指定的 this 值和单独给出的一个或多个参数来调用一个函数。
call()方法的作用和 apply() 方法类似,区别就是call()方法接受的是参数列表,而apply()方法接受的是一个参数数组。

apply

apply() 方法调用一个具有给定this值的函数,以及作为一个数组(或类似数组对象)提供的参数。

Function.apply(thisArg, [argsArray])
// thisArg: 必选的。在 func 函数运行时使用的 this 值。
argsArray:可选的。一个数组或者类数组对象,
**其中的数组元素将作为单独的参数传给 func 函数。**
返回值:调用有指定this值和参数的**函数**的结果。
示例

用 apply 将数组添加到另一个数组

var array = ['a', 'b'];
var elements = [0, 1, 2];
array.push.apply(array, elements);
console.info(array); // ["a", "b", 0, 1, 2]

bind

在 bind() 被调用时,这个新函数的 this 被指定为 bind() 的第一个参数,而其余参数将作为新函数的参数,供调用时使用。
bind() 函数会创建一个新的绑定函数(bound function,BF)。
调用绑定函数通常会导致执行包装函数。

绑定函数具有以下内部属性:
[[BoundTargetFunction]] - 包装的函数对象
[[BoundThis]] - 在调用包装函数时始终作为 this 值传递的值。
[[BoundArguments]] - 列表.
在对包装函数做任何调用都会优先用列表元素填充参数列表。
[[Call]] - 执行与此对象关联的代码。
通过函数调用表达式调用。
内部方法的参数是一个this值和一个包含通过调用表达式传递给函数的参数的列表。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: