call和apply和bind三者的区别

178 阅读1分钟

call和apply和bind三者的区别

相同点 : 作用一致,都是修改this指向
不同点 : 
    传参方式不同 : call是按照顺序传参,apply是数组/伪数组传参
    执行机制不同 : call和apply会立即执行函数,而bind不会立即执行函数,而是得到一个修改this指向后的新函数

1.环境对象 this : 谁'调用'我,我就指向谁
普通函数: 函数名() this指向window
对象方法: 对象名.方法名() this指向对象
构造函数: new 函数名() this指向new创建实例对象

2.上下文调用 : 修改函数内部的this
2.1 函数名.call(修改后的this,形参1,形参2…………)
2.2 函数名.apply(修改后的this, 数组或伪数组 )
2.3 函数名.bind(修改后的this)
* 不会立即执行函数,而是得到一个修改this之后的新函数。
* bind一般用于修改: 定时器函数、事件处理函数

this.png