JavaScript中call、apply、bind函数的用法
2016-11-21 16:32
603 查看
javascript中call、apply、bind这三个方法的作用都是改变执行环境中this指针的指向。
call传参:obj,arg2,arg3
apply传参:obj,[arg2,arg3,…]
call()与apply()
这两个方法第一个参数都为this指针指向的目标对象,它们的区别是第二个参数开始传参方式不同。call传参:obj,arg2,arg3
apply传参:obj,[arg2,arg3,…]
function foo(a,b){ return this.value + a + b; } var obj = { value: 1 } //call foo.call(obj,2,3); //6 //apply foo.apply(obj,[2,3]); //6 //call()与apply()如果第一个参数不是对象类型,那么这个参数会被自动转化为对象类型 function foo2(){ console.log(Object.prototype.toString.call(this)); } foo2.call(2); //[object Number]
bind()
第一个参数为this指针指向的目标对象,bind方法执行后返回的是一个新函数function foo3(){ console.log(this.name); } var obj3 = { name: '张三' } var f = foo3.bind(obj3); f(); // 张三 //在f这个新的函数对象中,this被永久绑定到了bind的第一个参数上面,无论后期这个新的函数被如何使用this都不会改变。 var obj4 = { name: '李四', f:f } obj4.f(); // 张三
call()与apply()与bind()
如果这个三个方法都没有提供第一个参数或参数是this、null、undefined中的一种,那么都将默认第一个参数为Global对象 。function foo3(){ console.log(Object.prototype.toString.call(this)); } foo3.call(); //[object Window] foo3.apply(); //[object Window] foo3.bind(); //[object Window]
相关文章推荐
- Javascript中call,apply,bind三个函数的用法
- javascript中call,apply,bind函数用法示例
- Javascript中关于call,apply,bind这三个函数的用法
- javascript this 和 es6 箭头函数this 的理解以及call()、apply()、bind()的用法
- javascript中call()、apply()、bind()的用法
- javascript 函数的三种调用方式 call / apply / bind
- 浅谈javascript中call()、apply()、bind()的用法(转载)
- 【JavaScript】[bind,call,apply] (function cal(){}());声明函数立即执行
- JavaScript学习笔记apply、call、bind用法说明
- 开启Javascript中apply、call、bind的用法之旅模式
- javascript中的call、apply和bind的用法
- javascript中call,apply,bind的用法对比分析
- 浅谈javascript的call()、apply()、bind()的用法
- 浅谈javascript中call()、apply()、bind()的用法
- javascript中的call(),apply()以及bind()的用法
- javascript中call,apply,bind的用法对比分析
- javascript中call,apply,bind的用法对比分析
- javascript(js)中函数apply和call的用法、区别、联系
- JavaScript必知必会(十) call apply bind的用法说明
- 开启Javascript中apply、call、bind的用法之旅模式