JavaScript之bind,call,apply

Posted flow

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript之bind,call,apply相关的知识,希望对你有一定的参考价值。

参考:

  • http://rangercyh.blog.51cto.com/1444712/1615809
function foo(a,b) {
    this.x = this.x + a + b;
}
//case 1:
var obj = {x:3};
foo.apply(obj,[1,2]);
//obj <==> {x:6}

//case 2:
var obj = {x:3};
foo.call(obj, 1, 2);
//obj <==> {x:6}

//case 3:
var obj = {x:3};
var foo1 = foo.bind(obj, 1, 2);
foo1();
//obj <==> {x:6}

区别:

call与apply的区别在于apply中传给foo的参数统一放到第二个参数数组中,call从第二个参数起皆为传给foo的参数;

call与bind的区别,call将立刻执行,bind返回一个新函数;

以上是关于JavaScript之bind,call,apply的主要内容,如果未能解决你的问题,请参考以下文章

学习Javascript之模拟实现bind

JavaScirpt之apply&call和bind

javascript中apply,call,bind区别,bind兼容等问题总结

深入浅出:了解JavaScript中的call,apply,bind的差别

Javascript中call,apply,bind方法的详解与总结

JavaScript中的apply()call()bind()