通过一段代码简单说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 相关文章推荐
js 在定义的时候立即执行的函数表达式(function)写法
Jan 16 Javascript
用jquery存取照片的具体实现方法
Jun 30 Javascript
js操作label给label赋值及取label的值示例
Nov 07 Javascript
ExtJS如何设置与获取radio控件的选取状态
Jan 22 Javascript
用js模拟struts2的多action调用示例
May 19 Javascript
JS折半插入排序算法实例
Dec 02 Javascript
基于JS实现新闻列表无缝向上滚动实例代码
Jan 22 Javascript
解决浏览器会自动填充密码的问题
Apr 28 Javascript
bootstrap+jQuery 实现下拉菜单中复选框全选和全不选效果
Jun 12 jQuery
Vue-cli 使用json server在本地模拟请求数据的示例代码
Nov 02 Javascript
微信小程序实现评论功能
Nov 28 Javascript
微信小程序通过js实现瀑布流布局详解
Aug 28 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实现随机生成易于记忆的密码
2015/06/19 PHP
PHP中的访问修饰符简单比较
2019/02/02 PHP
基于laravel-admin 后台 列表标签背景的使用方法
2019/10/03 PHP
jQuery 使用手册(一)
2009/09/23 Javascript
调试Node.JS的辅助工具(NodeWatcher)
2012/01/04 Javascript
javascript学习笔记(十) js对象 继承
2012/06/19 Javascript
JavaScript动态创建div属性和样式示例代码
2013/10/09 Javascript
对js关键字命名的疑问介绍
2014/04/25 Javascript
iScroll中事件点击触发两次解决方案
2015/03/11 Javascript
使用js实现的简单拖拽效果
2015/03/18 Javascript
JavaScript获取网页中第一个链接ID的方法
2015/04/03 Javascript
JavaScript计算某一天是星期几的方法
2015/08/05 Javascript
js时间戳转为日期格式的方法
2015/12/28 Javascript
纯JavaScript 实现flappy bird小游戏实例代码
2016/09/27 Javascript
vue.js  父向子组件传参的实例代码
2017/10/29 Javascript
JavaScript类数组对象转换为数组对象的方法实例分析
2018/07/24 Javascript
使用RN Animated做一个“添加购物车”动画的方法
2018/09/12 Javascript
微信小程序实现点击图片旋转180度并且弹出下拉列表
2018/11/27 Javascript
JavaScript格式化json和xml的方法示例
2019/01/22 Javascript
利用原生JS实现欢乐水果机小游戏
2020/04/23 Javascript
javascript实现页面的实时时钟显示示例
2020/08/06 Javascript
[02:34]DOTA2英雄基础教程 幽鬼
2014/01/02 DOTA
[01:29:17]RNG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.23
2019/09/05 DOTA
用python 批量更改图像尺寸到统一大小的方法
2018/03/31 Python
解决Python运行文件出现out of memory框的问题
2018/12/03 Python
对Python中画图时候的线类型详解
2019/07/07 Python
如何基于Python实现word文档重新排版
2020/09/29 Python
linux mint中搜狗输入法导致pycharm卡死的问题
2020/10/28 Python
css3隔行变换色实现示例
2014/02/19 HTML / CSS
小学英语课后反思
2014/04/26 职场文书
村委会换届选举方案
2014/05/03 职场文书
家长学校工作方案
2014/05/07 职场文书
软件测试专业推荐信
2014/09/18 职场文书
区政府领导班子个人对照检查材料
2014/09/25 职场文书
2014年双拥工作总结
2014/11/21 职场文书
Java新手教程之ArrayList的基本使用
2021/06/20 Java/Android