JS中call、apply、bind三者的作用和区别
在刚接触javascript时,就碰到call(),apply(),bind(),我一直不是很明白。在工作中接触它们次数多了,对这三个方法也有了点理解,总的就是一句话:三者的作用都是改变函数的执行上下文。今天把它们简单阐述一下!
JavaScript权威指南上的解释是: call() 、apply()可以看作是某个对象的方法,通过调用方法的形式来间接调用函数。我理解它们的作用是:都能继承另一个对象的方法和属性。bind() 就是将某个函数(属性或方法)绑定到某个对象上。
1 | var obj = {name: "Tom"} |
1.call() 和 apply() 的第一个参数都是指定的对象。这个对象就是该函数的执行上下文
2.call() 和 apply() 的区别:两者之间的参数不同
- call() 在第一个参数之后的 后续所有参数就是传入该函数的值(形参)。
- apply() 只有两个参数,第一个是指定的对象,第二个是数组,这个数组的每一个元素都是该函数的参数(形参)。
1 | // call()函数 |
1 | // apply() 函数 |
bind() 它的参数和call()相同。它和前两者不同在于: bind() 方法会返回执行上下文被改变的函数而不会立即执行,而前两者是直接执行该函数。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 三分石!
评论












