call apply 与 bind
2016-03-04 09:44
323 查看
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> </head> <body> //结合js中的this查看下面代码 <script> var demo1={ test1:"zyn", fn:function(){ console.log(this.test1); console.log(this); } } demo1.fn();//zyn //这里能够打印是因为,这里的this指向的是函数demo1 var exe=demo1.fn; exe();//undefined //这里的this指向的是window //解析 //就是this指的是,调用函数的那个对象。(既调用fn函数的对象demo1) //因为demo1的this指向的是window // var exe=demo1.fn 相当于把 window赋值给exe // exe();在window下面执行 //如果必须使用以上写法需用call,apply改变this指向 var exe=demo1.fn; exe.apply(demo1);//zyn exe.call(demo1);//zyn //解决 //call,apply区别传参的方式不同 var demo1={ test1:"zyn", fn:function(arg1,arg2){ console.log(this.test1); console.log("--->>"+arg1+arg2); } } var exe_this=demo1.fn; exe_this.apply(demo1,["xx","yy"]);//zyn xxyy exe_this.call(demo1,"xx","yy");//zyn xxyy var c =exe_this.bind(demo1,"xx","yy"); //zyn xxyy c(); //注意如果call和apply的第一个参数写的是null,那么this指向的是window对象 //bind方法和call、apply方法有些不同,但是不管怎么说它们都可以用来改变this的指向。 //call和apply都是改变上下文中的this并立即执行这个函数, //bind方法可以让对应的函数想什么时候调就什么时候调用,并且可以将参数在执行的时候添加,这是它们的区别 </script> </body> </html>
相关文章推荐
- Python动态类型的学习---引用的理解
- 土人系列AS入门教程 -- 对象篇
- C#托管堆对象实例包含内容分析
- C#实现获取不同对象中名称相同属性的方法
- javascript asp教程第十一课--Application 对象
- PowerShell中使用Out-String命令把对象转换成字符串输出的例子
- VBS教程:对象-正则表达式(RegExp)对象
- C#检查指定对象是否存在于ArrayList集合中的方法
- sql2008启动代理未将对象应用到实例解决方案
- C#编程自学之类和对象
- C++中对象的常引用、动态建立和释放相关知识讲解
- php中将一个对象保存到Session中的方法
- php对象和数组相互转换的方法
- PHP中把对象转换为关联数组代码分享
- C#写入对象或集合类型数据到xml文件的方法
- C#利用反射来判断对象是否包含某个属性的实现方法
- ASP.NET中使用Application对象实现简单在线人数统计功能
- asp提示Server 对象 错误 ASP 0178 : 80070005
- Javascript 对象的解释
- JavaScript对象、属性、事件手册集合方便查询