先看一个例子程序:
var temp = "I am Window!";
var object = {
name:"I am Object!";
getName:function(){
return function(){
return this.name;
}
}
}
alert(object.getName()());//猜猜这里返回什么("I am Window!")
为什么不是“I am Object!”,这是因为每个函数在被调用时,其活动对象都会自动取得两个特殊变量:this和arguments。
内部函数在搜索这两个变量时,只会搜索到其活动对象为止,因此不会访问外部函数的这两个变量。
本文通过一个具体的JavaScript示例程序解析了闭包的概念及作用域中this的指向问题。解释了为什么内部函数中的this并未指向预期的对象,而是指向了全局对象window。深入探讨了函数调用时活动对象如何取得this和arguments,以及内部函数如何只在其当前作用域内查找这些变量。
949

被折叠的 条评论
为什么被折叠?



