Javascript中的this

Javascript中,this是一个关键字,不是变量,也不是属性名。Javascript的语法不允许给this赋值。

注意:this没有作用域的限制,嵌套的函数不会从调用它的函数中继承this(函数内部的this不继承外部this的作用域)。如果嵌套函数作为方法调用(o.f()),其this值指向调用它的对象;如果嵌套函数作为函数调用,其this值为全局对象(非严格模式)或undefined(严格模式)。

很多人误以为调用嵌套函数时this会指向调用外层函数的上下文。如果你想访问外部函数的this值,需要将this的值保存在一个变量中(如self),这个变量和内部函数都在同一个作用域内。比如:

var o={
  m: function(){
       var self= this;
       console.log(this === o) ;   // true,  this就是这个对象o
       f();  
      
       function(){
            console.log(this === o);  // false, this的值是全局对象or undefined
            console.log(this === o);   // true, self指外部函数this的值
    }
 }  
};
o.m();

 

posted @ 2015-03-15 16:31  chenqiushi909  阅读(142)  评论(0)    收藏  举报