我有一个关于在嵌套函数方案中如何处理“ this”指针的问题。
假设我将以下示例代码插入到网页中。当我调用嵌套函数“ doSomeEffects()”时出现错误。我检查了Firebug,它表明当我使用该嵌套函数时,“ this”指针实际上指向全局“ window”对象,这是我所没有想到的。我一定不能正确理解某些东西,因为我认为自从我在对象的函数中声明嵌套函数以来,它就应该具有相对于该函数的“局部”作用域(即“ this”指针将像引用对象本身一样)在我的第一个“ if”语句中情况如何)。
任何指针(无双关语)将不胜感激。
var std_obj = {
options : { rows: 0, cols: 0 },
activeEffect : "none",
displayMe : function() {
// the 'this' pointer is referring to the std_obj
if (this.activeEffect=="fade") { }
var doSomeEffects = function() {
// the 'this' pointer is referring to the window obj, why?
if (this.activeEffect=="fade") { }
}
doSomeEffects();
}
};
std_obj.displayMe();
this
指在其上调用函数的对象。
var self = this;
,然后self
通过闭包在内部函数中进行引用。
doSomeEffects
没有与任何obj特别关联,因此this
假定它是窗口,所有元素的母亲。