通过一段代码简单说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 JSQL,SQL无处不在,
May 05 Javascript
js实现运动logo图片效果及运动元素对象sportBox使用方法
Dec 25 Javascript
jquery如何把参数列严格转换成数组实现思路
Apr 01 Javascript
jquery实现全选、反选、获得所有选中的checkbox
Sep 13 Javascript
js变量提升深入理解
Sep 16 Javascript
JS操作时间 - UNIX时间戳的简单介绍(必看篇)
Aug 16 Javascript
浅析Javascript中双等号(==)隐性转换机制
Oct 27 Javascript
Egg.js 中 AJax 上传文件获取参数的方法
Oct 10 Javascript
jquery获取img的src值实例介绍
Jan 16 jQuery
ES7之Async/await的使用详解
Mar 28 Javascript
详解vue中使用protobuf踩坑记
May 07 Javascript
vue 路由meta 设置导航隐藏与显示功能的示例代码
Sep 04 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+jQuery实现动态展示信息
2011/10/08 PHP
PHP中使用unset销毁变量并内存释放问题
2012/07/05 PHP
PHP递归调用的小技巧讲解
2013/02/19 PHP
PHP中的多行字符串传递给JavaScript的两种方法
2014/06/19 PHP
php+redis消息队列实现抢购功能
2018/02/08 PHP
PHP微商城开源代码实例
2019/03/27 PHP
Laravel 自动生成验证的实例讲解:login / logout
2019/10/14 PHP
linux mint下安装phpstorm2020包括JDK部分的教程详解
2020/09/17 PHP
新浪刚打开页面出来的全屏广告代码
2007/04/02 Javascript
js调试工具 Javascript Debug Toolkit 2.0.0版本发布
2008/12/02 Javascript
jquery tools之tooltip
2009/07/25 Javascript
Jquery Ajax学习实例6 向WebService发出请求,返回DataSet(XML) 异步调用
2010/03/18 Javascript
jQuery动态设置form表单的enctype值(实现代码)
2013/07/04 Javascript
javascript的内存管理详解
2013/08/07 Javascript
js动态往表格的td中添加图片并注册事件
2014/06/12 Javascript
微信小程序 五星评分(包括半颗星评分)实例代码
2016/12/14 Javascript
基于JavaScript定位当前的地理位置
2017/04/11 Javascript
angular实现IM聊天图片发送实例
2017/05/08 Javascript
js判断文件类型大小并给出提示的实现方法
2018/01/03 Javascript
JavaScript动态创建二维数组的方法示例
2019/02/01 Javascript
Django实现分页功能
2018/07/02 Python
Python中分支语句与循环语句实例详解
2018/09/13 Python
python实现简单的单变量线性回归方法
2018/11/08 Python
pytorch 使用单个GPU与多个GPU进行训练与测试的方法
2019/08/19 Python
python 画出使用分类器得到的决策边界
2019/08/21 Python
html5图片上传预览示例分享
2014/04/14 HTML / CSS
如何防止同一个帐户被多人同时登录
2013/08/01 面试题
运动会通讯稿400字
2014/01/28 职场文书
高中物理教学反思
2014/02/08 职场文书
模具设计与制造专业推荐信
2014/02/16 职场文书
警察正风肃纪剖析材料
2014/10/16 职场文书
保研推荐信范文
2015/03/25 职场文书
html实现随机点名器的示例代码
2021/04/02 Javascript
使用php的mail()函数实现发送邮件功能
2021/06/03 PHP
Python语法学习之进程的创建与常用方法详解
2022/04/08 Python
MySQL 语句执行顺序举例解析
2022/06/05 MySQL