js中的一个闭包小例子
2015-07-15 10:06
603 查看
var name = "The Window"; var object = { name : "My Object", getNameFunc : function(){ return function(){ return this.name; }; } }; alert(object.getNameFunc()());
结果是The Window 而不是My Object。
需要弄明白一个事情就是this的指向!!
function() {return this.name}() 这样执行,他中this是指向window的。所以name就是window上定义的name,也就是全局的name。
还不明白是吗,那我们再详细点来说。
把.name去掉,这个this指向[object Window],window下的name
去掉this,你会发现结果还是一样的,你会问,这是为什么呢?
这是因为每个函数里面都有一个this存在,与是否显式调用他没有关系。
下面我们把程序改成这样:
var name = "The Window"; var object = { name : "My Object", getNameFunc : function(){ return function(){ return object.name; }; } }; alert(object.getNameFunc()());
这样子 显示的就是 My Object了。
或者把this的指向改一下:
var name = "The Window"; var object = { name : "My Object", getNameFunc : function(){ var self=this; return function(){ return self.name; }; } }; alert(object.getNameFunc()());
结果也是My Object。
相关文章推荐
- js中的闭包实现自增
- JavaScript高级程序设计【面向对象-属性类型】
- JavaScript在html中的引用方式
- IE6支持透明PNG图片解决方案:DD_belatedPNG.js
- js 页面跳转整理
- JS只能输入数字,数字和字母等的正则表达式
- js限制字符串长度,超出的部分补...
- bzoj1016: [JSOI2008]最小生成树计数
- SharePoint 2013 JavaScript 对象判断用户权限
- JSBinding + SharpKit / 常见问题
- Js获取当前日期时间及其它操作
- JS匿名函数的理解
- javascript 正则介绍
- FreeMarker和JSP各自优缺点对比
- JavaScript 对象属性介绍
- JSP上传文件至服务器【2】
- ios与javascript的交互,适合刚接触电商ios与html5混编的朋友,(ios自学笔记)
- js获取当前时间
- JavaScript事件
- JS获取当前页面页面URL信息