通过一段代码简单说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 相关文章推荐
向fckeditor编辑器插入指定代码的方法
May 25 Javascript
jquery ajax执行后台方法
Mar 18 Javascript
JavaScript 高效运行代码分析
Mar 18 Javascript
用js实现trim()的解决办法
Apr 16 Javascript
javascript中apply和call方法的作用及区别说明
Feb 14 Javascript
将form表单中的元素转换成对象的方法适用表单提交
May 02 Javascript
做web开发 先学JavaScript
Dec 12 Javascript
初识Javascript小结
Jul 16 Javascript
关于json字符串与实体之间的严格验证代码
Nov 10 Javascript
小程序日历控件使用方法详解
Dec 29 Javascript
Jquery的autocomplete插件用法及参数讲解
Mar 12 jQuery
在vue中实现禁止回退上一步,路由不存历史记录
Jul 22 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连接局域网MYSQL数据库的简单实例
2013/08/26 PHP
Thinkphp中的volist标签用法简介
2014/06/18 PHP
async和DOM Script文件加载比较
2014/07/20 PHP
CI框架Session.php源码分析
2014/11/03 PHP
PHP生成随机密码方法汇总
2015/08/27 PHP
smarty高级特性之过滤器的使用方法
2015/12/25 PHP
php7函数,声明,返回值等新特性介绍
2018/05/25 PHP
php微信公众号开发之简答题
2018/10/20 PHP
页面中js执行顺序
2009/11/09 Javascript
写出更好的JavaScript程序之undefined篇(中)
2009/11/23 Javascript
JavaScript的内存释放问题详解
2015/01/21 Javascript
js实现多选项切换导航菜单的方法
2015/02/06 Javascript
JS组件Bootstrap实现下拉菜单效果代码
2016/04/26 Javascript
浅谈JavaScript前端开发的MVC结构与MVVM结构
2016/06/03 Javascript
jQuery展示表格点击变色、全选、删除
2017/01/05 Javascript
JS优化与惰性载入函数实例分析
2017/04/06 Javascript
jquery请求servlet实现ajax异步请求的示例
2017/06/03 jQuery
微信小程序使用video组件播放视频功能示例【附源码下载】
2017/12/08 Javascript
js将当前时间格式化为 年-月-日 时:分:秒的实现代码
2018/01/20 Javascript
vue的diff算法知识点总结
2018/03/29 Javascript
Vue源码中要const _toStr = Object.prototype.toString的原因分析
2018/12/09 Javascript
Python写的Socks5协议代理服务器
2014/08/06 Python
Python函数定义及传参方式详解(4种)
2019/03/18 Python
在python下使用tensorflow判断是否存在文件夹的实例
2019/06/10 Python
利用python-docx模块写批量生日邀请函
2019/08/26 Python
Python 求数组局部最大值的实例
2019/11/26 Python
Python3.7在anaconda里面使用IDLE编译器的步骤详解
2020/04/29 Python
Python字典实现伪切片功能
2020/10/28 Python
如何给HTML标签中的文本设置修饰线
2019/11/18 HTML / CSS
微软香港官网及网上商店:Microsoft HK
2016/09/01 全球购物
ellesse美国官方商店:意大利高级运动服品牌
2019/10/29 全球购物
加拿大领先家居家具网上购物:Aosom.ca
2020/05/27 全球购物
元宵节晚会主持人串词
2014/03/25 职场文书
电子商务专业求职信范文
2015/03/19 职场文书
实例详解Python的进程,线程和协程
2022/03/13 Python
正则表达式基础与常用验证表达式
2022/06/16 Javascript