通过一段代码简单说js中的this的使用


Posted in Javascript onJuly 23, 2013

今天有朋友说遇到如下代码,让我帮解释原因

var name = "The Window"; 
var object = { 
name : "My Object", 
getNameFunc : function(){ 
return function(){ 
return this.name; 
}; 
} 
};

alert(object.getNameFunc()());原因是js的this是动态决定的,和你调用方式有直接关系。

简单说如果你调用一个函数的时候使用“对象.函数名”的方式,那么this就是这个.(点)之前的对象,否则是window。
比如你在调用object.getNameFunc()的时候getNameFunc函数体中的this是刚声明的object。如果你写成

var func = object.getNameFunc; 
func();

这时候getNameFunc函数体中的this是window,虽然是同一函数调用方式的不同决定了this的不同。
同样的道理,object.getNameFunc()返回的是一个函数引用,加一个括号就是让函数执行。其实相当于如下代码
var func = object.getNameFunc(); 
alert( func() );

函数前没有“对象.”这种形式,所以执行函数时候this是window,结果就很明显了。

以后我会写一篇关于js this的文章,欢迎大家关注我的CSDN博客tt361。

Javascript 相关文章推荐
Google韩国首页图标动画效果
Aug 26 Javascript
js字符编码函数区别分析
Jun 05 Javascript
JavaScript 学习初步 入门教程
Mar 25 Javascript
javascript事件冒泡实例分析
May 13 Javascript
深入解读JavaScript中的Hoisting机制
Aug 12 Javascript
JS实现部分HTML固定页面顶部随屏滚动效果
Dec 24 Javascript
微信小程序中用WebStorm使用LESS
Mar 08 Javascript
jQuery实现QQ空间汉字转拼音功能示例
Jul 10 jQuery
Vue-Router模式和钩子的用法
Feb 28 Javascript
详解vue 计算属性与方法跟侦听器区别(面试考点)
Apr 23 Javascript
微信小程序换肤功能实现代码(思路详解)
Aug 25 Javascript
JavaScript TAB栏切换效果的示例
Nov 05 Javascript
JS分页控件 可用于无刷新分页
Jul 23 #Javascript
JavaScript获取onclick、onchange等事件值的代码
Jul 22 #Javascript
offsetHeight在OnLoad中获取为0的现象
Jul 22 #Javascript
用jQuery获取IE9下拉框默认值问题探讨
Jul 22 #Javascript
JS 实现图片直接下载示例代码
Jul 22 #Javascript
js操作iframe兼容各种主流浏览器示例代码
Jul 22 #Javascript
JavaScript的模块化:封装(闭包),继承(原型) 介绍
Jul 22 #Javascript
You might like
PHP 编程请选择正确的文本编辑软件
2006/12/21 PHP
ThinkPHP与PHPExcel冲突解决方法
2011/08/08 PHP
php实现mysql封装类示例
2014/05/07 PHP
js 验证密码强弱的小例子
2013/03/21 Javascript
将list转换为json失败的原因
2013/12/17 Javascript
情人节单身的我是如何在敲完代码之后收到12束玫瑰的(javascript)
2015/08/21 Javascript
基于javascript实现最简单选项卡切换
2017/02/01 Javascript
JS批量替换内容中关键词为超链接
2017/02/20 Javascript
Vue一次性简洁明了引入所有公共组件的方法
2018/11/28 Javascript
ES6的Fetch异步请求的实现方法
2018/12/07 Javascript
微信小程序学习笔记之表单提交与PHP后台数据交互处理图文详解
2019/03/28 Javascript
javascript实现点亮灯泡特效示例
2019/10/15 Javascript
JavaScript HTML DOM 元素 (节点)新增,编辑,删除操作实例分析
2020/03/02 Javascript
使用JavaScript通过前端发送电子邮件
2020/05/22 Javascript
解决windows下Sublime Text 2 运行 PyQt 不显示的方法分享
2014/06/18 Python
在Python操作时间和日期之asctime()方法的使用
2015/05/22 Python
python获取元素在数组中索引号的方法
2015/07/15 Python
快速实现基于Python的微信聊天机器人示例代码
2017/03/03 Python
Python/Django后端使用PIL Image生成头像缩略图
2019/04/30 Python
python读写csv文件方法详细总结
2019/07/05 Python
Python网页解析器使用实例详解
2020/05/30 Python
Python3+selenium配置常见报错解决方案
2020/08/28 Python
如何基于Python实现word文档重新排版
2020/09/29 Python
基于python+selenium自动健康打卡的实现代码
2021/01/13 Python
德国童装购物网站:NICKI´S.com
2018/04/20 全球购物
双立人美国官方商店:ZWILLING集团餐具和炊具
2020/05/07 全球购物
函授本科毕业生自我鉴定
2013/10/16 职场文书
小学生自我评价范文
2014/01/25 职场文书
销售类求职信
2014/06/13 职场文书
会议欢迎标语
2014/06/30 职场文书
党员对照检查材料思想汇报
2014/09/16 职场文书
2015年乡镇扶贫工作总结
2015/04/08 职场文书
保险公司客户经理岗位职责
2015/04/09 职场文书
HTML5中 rem适配方案与 viewport 适配问题详解
2021/04/27 HTML / CSS
为什么代码规范要求SQL语句不要过多的join
2021/06/23 MySQL
MySQL中TIMESTAMP类型返回日期时间数据中带有T的解决
2022/12/24 MySQL