语法
func.bind(thisArg[, arg1[, arg2[, ...]]])
,返回值:返回由指定的this
值和初始化参数改造的原函数拷贝;func.call(thisArg[, arg1[, arg2[, ...]]])
,返回值:无返回值;func.apply(thisArg[, argsArray])
,返回值:无返回值;
相同点
改变 this
指向,改变函数的 arguments
不同点
1. bind()
方法创建一个新的函数;call()
和 apply()
方法调用一个函数
说明:
func.bind(thisArg)
后,函数 func
不会立即执行,要想执行需要 func.bind(thisArg)()
;func.call(thisArg)
、func.apply(thisArg)
函数 func
会立即执行。
1 | var name = 'window'; |
2. bind()
和 call()
方法接受的是若干个参数的列表,而 apply()
方法接受的是一个包含多个参数的数组
说明:
apply 方法如果要传入第二个参数,则第二个参数必须未数组,否则会报错。
1 | object = {}; |
其他
- bind 是 ES5 方法,不兼容 IE8 及其以下;
- ES5 以后, apply 第二个参数也可以接受类数组对象(如:
{'length': 2, '0': 'eat', '1': 'bananas'}
);