JavaScript_call,bind,apply的区别
call、apply、bind
1、改变方法中this关键字并且将方法执行,bind 返回的是一个新的函数,你必须调用它才会被执行。
2、call 、bind 、 apply 这三个函数的第一个参数都是 this 的指向对象。第二个参数的区别:
* call 的参数是直接放进去的,第二第三第 n 个参数全都用逗号分隔,obj.myFun.call(db,'成都','广州');
* apply 的所有参数都必须放在一个数组里面传进去 obj.myFun.apply(db,['成都','广州']);
* bind 除了返回是函数以外,它 的参数和 call 一样。
var name = '小王',age = 17; var obj = { name: '小张', objAge: this.age, myFun: function (fm, t) { console.log(this.name + " 年龄" + this.age + " 来自 " + fm + " 去往 " + t); } } var db = { name: '德玛', age: 99 } obj.myFun.call(db,'成都','上海'); // 德玛 年龄 99 来自 成都去往上海 obj.myFun.apply(db,['成都','上海']); // 德玛 年龄 99 来自 成都去往上海 obj.myFun.bind(db,'成都','上海')(); // 德玛 年龄 99 来自 成都去往上海 obj.myFun.bind(db,['成都','上海'])(); // 德玛 年龄 99 来自 成都, 上海去往 undefined