通过一段代码简单说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
Nov 25 Javascript
JS隐藏参数post传值实例
Apr 18 Javascript
js中的异常处理try...catch使用介绍
Sep 21 Javascript
深入理解JavaScript系列(36):设计模式之中介者模式详解
Mar 04 Javascript
图解Sublime Text3使用技巧
Dec 21 Javascript
谈谈我对JavaScript原型和闭包系列理解(随手笔记8)
Dec 24 Javascript
jquery实现跳到底部,回到顶部效果的简单实例(类似锚)
Jul 10 Javascript
微信小程序开发之toast提示插件使用示例
Jun 08 Javascript
JavaScript实现异步图像上传功能
Jul 12 Javascript
完美解决vue 中多个echarts图表自适应的问题
Jul 19 Javascript
微信小程序实现聊天室
Aug 21 Javascript
vue router-link 默认a标签去除下划线的实现
Nov 06 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生成略缩图代码
2012/07/16 PHP
教你如何在CI框架中使用 .htaccess 隐藏url中index.php
2014/06/09 PHP
使用PHP连接多种数据库的实现代码(mysql,access,sqlserver,Oracle)
2016/12/21 PHP
PHP-X系列教程之内置函数的使用示例
2017/10/16 PHP
PHP与Web页面交互操作实例分析
2020/06/02 PHP
javascript验证上传文件的类型限制必须为某些格式
2013/11/14 Javascript
js判断undefined类型示例代码
2014/02/10 Javascript
js的Prototype属性解释及常用方法
2014/05/08 Javascript
JS实现一个列表中包含上移下移删除等功能
2014/09/24 Javascript
node.js中的fs.link方法使用说明
2014/12/15 Javascript
jQuery中:text选择器用法实例
2015/01/03 Javascript
JS动态加载当前时间的方法
2015/02/09 Javascript
JavaScript实现自动消除按钮功能的方法
2015/08/05 Javascript
javascript数组对象常用api函数小结(连接,插入,删除,反转,排序等)
2016/09/20 Javascript
使用Bootstrap + Vue.js实现表格的动态展示、新增和删除功能
2017/11/27 Javascript
vue如何自动化打包测试环境和正式环境的dist/test文件
2019/06/06 Javascript
javascript实现的时间格式加8小时功能示例
2019/06/13 Javascript
[01:25]DOTA2自定义游戏灵园鬼域等你踏足
2015/10/30 DOTA
[01:00] DOTA2英雄背景故事第五期之重力引力法则谜团
2020/07/16 DOTA
python导入时小括号大作用
2017/01/10 Python
python使用openpyxl库修改excel表格数据方法
2018/05/03 Python
mac PyCharm添加Python解释器及添加package路径的方法
2018/10/29 Python
Python设计模式之解释器模式原理与用法实例分析
2019/01/10 Python
阿里云ECS服务器部署django的方法
2019/08/29 Python
Python下应用opencv 实现人脸检测功能
2019/10/24 Python
澳大利亚婴儿、幼儿和儿童在线设计师商店:Smooch Baby
2019/02/16 全球购物
项目经理的岗位职责
2013/11/23 职场文书
培训自我鉴定
2014/01/31 职场文书
全国税务系统先进集体事迹材料
2014/05/19 职场文书
学校消防安全责任书
2014/07/23 职场文书
大学迎新生标语
2014/10/06 职场文书
2014年数学教师工作总结
2014/12/03 职场文书
2015年国税春训心得体会
2015/03/09 职场文书
瞿秋白纪念馆观后感
2015/06/10 职场文书
幼儿园老师新年寄语
2015/08/17 职场文书
学习新党章心得体会2016
2016/01/15 职场文书