关于this

网上有很多介绍this,下面2个例子是引用阮一峰的

 function test(){
        this.x = 1;
        alert(this.x);
  }
  test(); // 1

这是函数的最通常用法,属于全局性调用,因此this就代表全局对象Global。

 function test(){
    alert(this.x);  
  }
  var o = {};
  o.x = 1;
  o.m = test;
  o.m(); // 1

函数还可以作为某个对象的方法调用,这时this就指这个上级对象。

自己想法

var foo = function(){console.log(this)}
var obj = {
   method : function(){foo()},
   method2: function(){console.log(this)},
   method3: function(){function func(){foo();}func()},
   method4: function(){var _self = this;function func(){_self.method2()}  func()}
}

分别输出1. window 2.obj 3window 4.obj
1和2的区别是什么?1是在对象的method方法的环境下中的一个func中执行代码,而2是在method方法的直接环境下执行代码,
所以我的观点是,在对象方法的直接环境下执行代码会指向obj本身,在其他则指向window

  var obj = {
   method2: function(){
                       console.log(this)//----obj
                       function foo(){console.log(this)}//
                       foo()  //----window
                       this.method3() // ----obj
                      },
    method3:function(){console.log(this)}//代码是在对象的method3方法的直接环境下执行,所以也是指向obj
  
}

对象方法中只会影响直接环境下的this指向

所以在this混乱的情况下 写好 var _self = this 至关重要

举例: jq中回调函数的this......

以上仅个人见解,,有误,,请提出。。。。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 什么是this this是JS中一个非常重要的关键字。this 就是你 call 一个函数时,传入的 contex...
    字母31阅读 215评论 0 1
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 34,955评论 18 399
  • 最近一段时间学习了一下JS原型相关的知识,其中一个重要的点是关于this关键字的值究竟是什么?讲真,在此之前,虽然...
    大春春阅读 1,570评论 1 7
  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 2,116评论 0 9
  • 我想要自己慢下来,不再急匆匆的赶着上班,不再为每一次排长队而心焦,不再为错过的公交车而懊恼,不再快快的冲凉只为多看...
    guiv阅读 282评论 0 0

友情链接更多精彩内容