javaScript-call()、apply()、bind()函数的使用
javaScript-call、apply、bind函数的使用
在JavaScript中每个函数都包含两个非继承而来的函数apply()和call(),这两个函数的作用是一样的。都是为了改变函数运行时的上下文而存在的,实际就是改变函数体内this的指向。而bind()函数也是一样的。
apply和call是立即执行函数,而bind没有立即执行
call函数的基本使用
call()函数调用一个函数时,会将该函数的执行对象上下文改变为另一个对象。
1 | function.call(thisArg, arg1, arg2, ...) |
- function为需要调用的函数。
- thisArg表示的是新的对象上下文,函数中的this将指向thisArg,如果thisArg为null或者unfriend,则this会指向全局对象。
- arg1,arg2,…表示的是函数所接收的参数列表。
1 | function User(name) { |
call函数用于继承
1 | function Person(name){ |
apply函数的基本使用
apply()函数的作用域与call()函数是一致的,只是在传递参数时存在差异。
1 | function.apply(thisArg, [argsArray]) |
function和thisArg和call一样
[argsArray] 表示参数会通过数组形式进行传递。
bind函数的基本使用
bind函数创建新的函数,在调用时设置this关键字为提供的值,在执行新函数时,将给定的参数列表作为原函数的参数序列,从前往后匹配。
1 | function.bind(thisArg, arg1, arg2, ...) |
bind函数和call函数用法基本一致,只是bind函数返回值是原函数的副本。
1 | function User(name) { |