【JavaScript】[bind,call,apply] (function cal(){}());声明函数立即执行
---恢复内容开始---
1、js 里函数调用有 4 种模式:方法调用、正常函数调用、构造器函数调用、apply/call 调用。
同时,无论哪种函数调用除了你声明时定义的形参外,还会自动添加 2 个形参,分别是 this 和arguments
。
2、apply:apply 函数接收 2 个参数,第一个是传递给这个函数用来绑定 this 的值,第二个是一个参数
数组。
call和apply的存在是为了改变this的绑定。
注意:区别就是call后面接受的是不定参数,而不是数组。
看代码:
function a(xx, yy) { alert(xx, yy); alert(this); alert(arguments); } a.apply(null, [5, 55]); a.call(null, 5, 55);
3、call和apply会立即执行函数,二bind不会,它会生成一个新的函数。
其它和call一样子,看代码:
var m = { "x" : 1 }; function foo(y) { alert(this.x + y); } foo.apply(m, [5]); foo.call(m, 5); var foo1 = foo.bind(m, 5); foo1();
醍醐灌顶: