bind&call&apply
来源:互联网 发布:网易公开课mac版 编辑:程序博客网 时间:2024/05/20 15:36
1.改变this指向
var a = { text: 1, alert: function () { console.log(this.text) }};function b(cb) { cb();}b(a.alert);
针对上述题,毫无疑问输出undefined,因为this指向window,如何让函数输出1,这里毫无疑问是改变this指向,即可以用bind,call,apply。但通过此题目可以学习到bind和后面两个的区别。
bind改变指向后,不会立即调用,bind会创建一个新函数,称为绑定函数,当调用这个函数的时候,绑定函数会以创建它时传入bind()方法的第一个参数作为this,传入bind()方法的第二个及以后的参数加上绑定函数运行时本身的参数按照顺序作为原函数的参数来调用原函数;
而call和apply则会立即调用,所以此题可以改为
var a = { text: 1, alert: function () { console.log(this.text) }};function b(cb) { cb.call(a);//其中一种版本 cb.apply(a);//第二种版本 cb.bind(a)();//第三种版本}b(a.alert);
阅读全文
0 0
- call apply 与 bind
- call()、apply()、bind()
- apply bind call区别
- call,apply,bind
- 【JavaScript】call, apply, bind
- bind apply call异同
- apply call bind区别
- bind , call and apply
- JS call bind apply
- call()、apply()与bind()
- call apply bind
- call()、apply()、bind()详解
- bind apply call
- apply,call,bind
- apply、call、bind
- call,apply,bind
- bind&call&apply
- bind、apply、call解析
- $.post()方法
- nginx安装以及注意事项
- 【USACO TRAINING】货币系统
- XZ_CSS之CSS布局- float属性/position属性、标签的居中
- hadoop数据类型与java 数据类型的转换
- bind&call&apply
- webstom新增vue模板
- 最新Android Glide4.0加载Gif图片到ImageView
- 华为2018校招第二题 求去重后的最大整数
- $.ajax()方法
- 方法注释模板
- Vue使用经验小结
- BZOJ4237 稻草人
- osal_init_system()函数研究(转)