<script>
var name = "The Window";
var object = {
name : "My Object",
getNameFunc : function(){
return function(){
return this.name;
}
}
};
alert(object.getNameFunc()());
</script>
为什么打印出The window而不是My Object?哪位大神给解释下,不明白这个闭包为了做什么?
闭包
var name = "The Window";
var object = {
name : "My Object",
getNameFunc : function(){
return function(){
return this.name;
}
}
};
alert(object.getNameFunc()());
</script>
为什么打印出The window而不是My Object?哪位大神给解释下,不明白这个闭包为了做什么?
闭包
解决方案 »
- 添加属性的方式,write输出转移字符以及函数变量声明等问题
- jquery问题求教(实现一个div层的动态效果)
- [原创]========一个JavaScript放大镜的特效=============
- 跪求,关于转贴问题
- jsp中,js如何取java的Map值
- 在vbs中的asc函数,在js中有此功能函数么
- MediaPlayer如何实现跳转指定的播放时间
- 怎样检测客户端的Office安装路径
- 两级菜单问题
- 各路俠客,請大家來我這休息一下!! 我的 iframe 不能修改 parent 中一表格的 id 值,不過我的 iframe 有點特殊!!
- 延迟加载问题
- 表格列数太多,缩成一团,加了一个滑动条,字又自动拆行,很无语,求解释啊
var object = {
name: "My Object",
getNameFunc: function () {
var me = this;
return function () {
return me.name;
}
}
};
alert(object.getNameFunc()());
return this.name;
}
返回 是一个函数,不是 object 的方法,普通function下的this都是window
var name = "The Window"; 写在外面也是挂在window 下
//这里的name是window对象的属性。
var name = "The Window";
var object = {
name : "My Object",
getNameFunc : function(){
return function(){
return this.name;
}
}
}; /*
* object.getnameFunc() :返回是的一个函数,这个函数是window对象的方法。
* object.getnameFunc()():调用window对象的方法,因此,该函数里的this代表window。
*/
alert(object.getNameFunc()());
var msg = "My Object";
window.onload = function() {
alert(msg);
}
})();
这里闭包内的this指代的是window 对象,因为每个函数被调用的时候会自动取得两个特殊的变量:this和arguments。内部函数在搜索这两个变量的时候,只会搜索到其活动的对象为止,因此永远不可能访问外部函数中的这两个变量,你就记住匿名函数的this是window就好
alert(object.getNameFunc()());
//等同于:
alert(
(function(){
return this.name;
})()//此处为全局环境下匿名函数自执行,this在这里自然是window对象
)
this[匿名] = object.getNameFunc();
this[匿名]();
而执行时的this在window这个根下面。
var name = "The Window";
var object = {
name : "My Object",
getNameFunc : function(){
alert(this.name+' now');
return function(){
return this.name;
}
}
};
alert(object.getNameFunc()());
</script>
给你看看这个代码你就明白了~,外面那层return,调用他的是object,返回一个函数,就是里面那个函数;里面那个函数,调用它的是全局,所以this指代的是全局,即window,所以返回the window