美文网首页
ES5_call,apply,bind用法详解19-10-15

ES5_call,apply,bind用法详解19-10-15

作者: 你坤儿姐 | 来源:发表于2019-10-15 14:38 被阅读0次

1.call 和 apply传参的方式

var obj = {username: 'kobe'};
function foo(){
   console.log(this);
}
foo();//此时foo的this指向的是最外层的window

var obj1 = {username: 'kobe'};
function foo1(){
   console.log(this);
}

foo1.call(obj1);//这里foo1的this指向的是obj1
foo1.apply(obj1);//这里foo1的this指向的是obj1,没有传参钱call和apply用法是一样的

var obj2 = {username: 'kobe'};
function foo2(data){
   console.log(this, data);
}
foo2.call(obj2,33); //直接从第二个参数开始依次传入
foo2.call(obj2,[33]);//apply传参传入的数据要放到数组里面

2.bind传参的方式
bind的特点:绑定完this不会立即调用当前函数,而是将函数返回bind传参的方式和call一样

var obj2 = {username: 'kobe'};
function foo2(data){
   console.log(this, data);
}
 //bind的特点:绑定完this不会立即调用当前函数,而是将函数返回
var bar = foo2.bind(obj2);
console.log(bar); //此时定义的bar是obj2,可以调用
bar();//打印出{usename: 'kobe'} undifined
//这里bar可以加括号调用,可以直接写成如下
foo2.bind(obj2, 33)();

相关文章

网友评论

      本文标题:ES5_call,apply,bind用法详解19-10-15

      本文链接:https://www.haomeiwen.com/subject/gbcsmctx.html