通过一段代码简单说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 相关文章推荐
javascript生成/解析dom的CDATA类型的字段的代码
Apr 22 Javascript
IE 上下滚动展示模仿Marquee机制
Dec 20 Javascript
dreamweaver 安装Jquery智能提示
Apr 02 Javascript
单击按钮显示隐藏子菜单经典案例
Jan 04 Javascript
jQuery插件jQuery-JSONP开发ajax调用使用注意事项
Nov 22 Javascript
node.js中的console.log方法使用说明
Dec 09 Javascript
简要了解jQuery移动web开发的响应式布局设计
Dec 04 Javascript
动态生成的DOM不会触发onclick事件的原因及解决方法
Aug 06 Javascript
Bootstrap Table使用整理(二)
Jun 09 Javascript
浅谈高大上的微信小程序中渲染html内容—技术分享
Oct 25 Javascript
Ajax请求时无法重定向的问题解决代码详解
Jun 21 Javascript
vue axios请求成功却进入catch的原因分析
Sep 08 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
phpwind中的数据库操作类
2007/01/02 PHP
PHP中的extract的作用分析
2008/04/09 PHP
PHP文件缓存类示例分享
2015/01/30 PHP
PHP进程通信基础之信号量与共享内存通信
2017/02/19 PHP
php获取文章内容第一张图片的方法示例
2017/07/03 PHP
PHP自定义函数实现数组比较功能示例
2017/10/19 PHP
PHP PDOStatement::fetchObject讲解
2019/02/01 PHP
实用javaScript技术-屏蔽类
2006/08/15 Javascript
如何让div span等元素能响应键盘事件操作指南
2012/11/13 Javascript
禁止你的左键复制实用技巧
2013/01/04 Javascript
javascript中Array()数组函数详解
2015/08/23 Javascript
JS数组操作(数组增加、删除、翻转、转字符串、取索引、截取(切片)slice、剪接splice、数组合并)
2016/05/20 Javascript
jQuery学习之DOM节点的插入方法总结
2017/01/22 Javascript
JavaScript函数节流的两种写法
2017/04/07 Javascript
详解Vue.js组件可复用性的混合(mixin)方式和自定义指令
2017/09/06 Javascript
JavaScript实现带有子菜单和控件的slider轮播图效果
2017/11/01 Javascript
vue父组件点击触发子组件事件的实例讲解
2018/02/08 Javascript
js中let和var定义变量的区别
2018/02/08 Javascript
小程序ios音频播放没声音问题的解决
2018/07/11 Javascript
JQuery搜索框自动补全(模糊匹配)功能实现示例
2019/01/08 jQuery
vue.js实现数据库的JSON数据输出渲染到html页面功能示例
2019/08/03 Javascript
jQuery Raty星级评分插件使用方法实例分析
2019/11/25 jQuery
浅谈vue 多个变量同时赋相同值互相影响
2020/08/05 Javascript
你真的了解Python的random模块吗?
2017/12/12 Python
在Python中合并字典模块ChainMap的隐藏坑【推荐】
2019/06/27 Python
python实现梯度下降和逻辑回归
2020/03/24 Python
通过cmd进入python的步骤
2020/06/16 Python
CSS3 linear-gradient线性渐变生成加号和减号的方法
2017/11/21 HTML / CSS
美国家居装饰网上商店:Lulu & Georgia
2019/09/14 全球购物
国外软件测试工程师面试题
2016/12/09 面试题
会议邀请书范文
2014/02/02 职场文书
乡镇民主生活会发言材料
2014/10/20 职场文书
客户答谢会致辞
2015/07/30 职场文书
导游词之江南周庄
2019/12/06 职场文书
React + Threejs + Swiper 实现全景图效果的完整代码
2021/06/28 Javascript
如何利用python创作字符画
2022/06/25 Python