标签:
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();
标签:
原文地址:http://www.cnblogs.com/chenqiushi/p/4339979.html