作家
登录

别再为了this发愁了:JS中的this机制

作者: 来源: 2017-04-06 16:04:32 阅读 我要评论

 

须要解释的一点是,最后一个调用该函数的对象是传到函数的高低文对象(绕懵了)。如:

  1. function fn() { 
  2.  
  3.     console.log( this.a ); 
  4.  
  5.  
  6. var obj2 = { 
  7.  
  8.     a: 42, 
  9.  
  10.     fn: fn 
  11.  
  12. }; 
  13.  
  14. var obj1 = { 
  15.  
  16.     a: 2, 
  17.  
  18.     obj2: obj2 
  19.  
  20. }; 
  21.  
  22. obj1.obj2.fn(); // 42 -- this引用的是obj2.  

还有一点要解释的是,掉去隐式绑定的情况,如下:

5.3 显示绑定

学过bind()\apply()\call()函数的都应当知道,它接收的第一个参数等于高低文对象并将其赋给this。看下面的例子:

  1. function fn() { 
  2.  
  3.     console.log( this.a ); 
  4.  
  5.  
  6. var obj = { 
  7.  
  8.     a: 2 
  9.  
  10. }; 
  11.  
  12. fn.call( obj ); // 2  

如不雅我们传递第一个值为简单值,那么后台会主动转换为对应的封装对象。如不雅传递为null,那么结不雅就是在绑定默认全局变量,如:

那边不雅众又该问了,既然this这么难以懂得,那么为个甚还要用它呢?我们来看个例子:

  1. function fn() { 
  2.  
  3.      console.log( this.a ); 
  4.  
  5.  
  6. var obj = { 
  7.  
  8.      a: 2 
  9.  
  10. }; 
  11.  
  12. var a = 10; 
  13.  
  14. fn.call( null); // 10  

5.4 new新对象绑定

如不雅是一个构造函数,那么竽暌姑new来调用,那么绑定的将是新创建的对象。如:

  1. function fn(a) { 
  2.  
  3.     this.a = a; 
  4.  
  5.  
  6. var bar = new fn( 2 ); 
  7.  
  8. console.log( bar.a );// 2  

读到如今,1中问的问题你该本身能答复上来了。膳绫擎介绍的四种关于this绑定的4中情况和规矩,实际写代码的过程中肯定比这要多和复杂,然则无论多复杂多乱,它们都是混淆应用膳绫擎的几个规矩和情况罢了。只要你的思路和懂得是清楚的,那肯定没问题的。

【编辑推荐】

  1. 由里到外步步深挖,深刻懂得JSON
  2. 美团王兴星:外卖贸易变现若何大年夜0到1
  3. Node + FFmpeg 实现Canvas动画导出视频
  4. Google爬虫若何抓取JavaScript的?
  5. 2017年移动开辟情况是趋势转型照样重视安然?都要!
【义务编辑:枯木 TEL:(010)68476606】

  推荐阅读

  监测和管理:现代数据中心的主要考虑因素

上个月,我们在《创建数据中间监控筹划的最佳实践筹划》一文中商量了一个异常有趣的话题。然则,似乎关于这方面话题的评论辩论远未停止。在以前的一个月中,我收到了大年夜量关于现代数据>>>详细阅读


本文标题:别再为了this发愁了:JS中的this机制

地址:http://www.17bianji.com/lsqh/34612.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)