5分钟理解JavaScript中this用法分享


Posted in Javascript onNovember 09, 2013

前言
关于JavaScript中this的用法网络中已经有较多比较详尽的介绍,可以参考本文的参考学习资料和网络。本文结合网络收集整理,尝试以一种简易的方式阐述JavaScript中this的用法,希望对大家关于JavaScript中this用法的快速理解有所帮助。
正文
1. this用法实例

window.color = “red”; 
var o = { color: “blue” }; 
function sayColor(){ 
    alert(this.color); 
} 
sayColor(); //”red” 
o.sayColor = sayColor; 
o.sayColor(); //”blue”

2. this用法简易理解
this指向哪里:
this运行的环境(the context object),或者简单理解为:this所在函数被调用时的当前作用域。
一段实例代码立刻明白:
var fun = function() { 
    console.log(this); 
} 
fun();// console: window,fun 的执行context为window,即this所在函数(fun())被调用时的当前作用域为window。 
new fun();//console: fun,fun 的执行context为fun对象内,即this所在函数(fun())被调用时的当前作用域为fun对象内。

3. this用法的一个特殊情况
(1)情况:
<input type="button" id="aButton" value="demo" onclick="demo()" /> 
<script type="text/javascript"> 
function demo() { 
    this.value = Math.random(); 
} 
</script>

点击这个button之后,你会发现按钮的value值没有改变。
原因:在本代码运行的情况下this指向的是window对象。
<input type="button" id="aButton" value="demo" /> 
<script type="text/javascript"> 
var button = document.getElementById("aButton"); 
function demo() { 
    this.value = Math.random(); 
} 
button.onclick= demo; 
</script>

点击这个button之后,程序可正常执行。
(2)原因解释:
<input type="button" id="aButton" value="demo" /> 
<script type="text/javascript"> 
var button = document.getElementById("aButton"); 
function demo() { 
    this.value = Math.random(); 
} 
button.onclick= demo; 
alert(button.onclick); 
</script>

得到的输出是:
function demo() { 
    this.value = Math.random(); 
}

<input type="button" id="aButton" value="demo" onclick="demo()" /> 
<script type="text/javascript"> 
var button = document.getElementById("aButton"); 
function demo() { 
    this.value = Math.random(); 
} 
alert(button.onclick); 
</script>

得到的输出是:
function onclick() { 
    demo(); 
}
Javascript 相关文章推荐
jQuery中find()方法用法实例
Jan 07 Javascript
Bootstrap字体图标无法正常显示的解决方法
Oct 08 Javascript
基于vue.js实现图片轮播效果
Dec 01 Javascript
Javascript this 函数深入详解
Dec 13 Javascript
JS移动端/H5同时选择多张图片上传并使用canvas压缩图片
Jun 20 Javascript
你可能不知道的JSON.stringify()详解
Aug 17 Javascript
ReactNative 之FlatList使用及踩坑封装总结
Nov 29 Javascript
基于zTree树形菜单的使用实例
Dec 25 Javascript
vue视图不更新情况详解
May 16 Javascript
Vue 利用指令实现禁止反复发送请求的两种方法
Sep 15 Javascript
vue 中 elment-ui table合并上下两行相同数据单元格
Dec 26 Javascript
eslint+prettier统一代码风格的实现方法
Jul 22 Javascript
Mac地址验证的javascript代码
Nov 09 #Javascript
详解jquery uploadify 上传文件
Nov 09 #Javascript
深入理解Javascript中的循环优化
Nov 09 #Javascript
原生JS可拖动弹窗效果实例代码
Nov 09 #Javascript
当鼠标移动时出现特效的JQuery代码
Nov 08 #Javascript
window.onresize 多次触发的解决方法
Nov 08 #Javascript
javascript阻止scroll事件多次执行的思路及实现
Nov 08 #Javascript
You might like
允许phpmyadmin空密码登录的配置方法
2011/05/29 PHP
Apache服务器无法使用的解决方法
2013/05/08 PHP
PHP实现的DES加密解密实例代码
2016/04/06 PHP
PHP简单操作MongoDB的方法(安装及增删改查)
2016/05/26 PHP
Yii2.0多文件上传实例说明
2017/07/24 PHP
yii 框架实现按天,月,年,自定义时间段统计数据的方法分析
2020/04/04 PHP
Javascript调试工具(下载)
2007/01/09 Javascript
基于jquery的滚动鼠标放大缩小图片效果
2011/10/27 Javascript
JavaScript高级程序设计(第3版)学习笔记10 再访js对象
2012/10/11 Javascript
jquery动态改变onclick属性导致失效的问题解决方法
2013/12/04 Javascript
js中实现多态采用和继承类似的方法
2014/08/22 Javascript
谈谈基于iframe、FormData、FileReader三种无刷新上传文件的方法
2015/12/03 Javascript
JavaScript省市区三级联动菜单效果
2016/09/21 Javascript
jQGrid Table操作列中点击【操作】按钮弹出按钮层的实现代码
2016/12/05 Javascript
微信小程序开发之视频播放器 Video 弹幕 弹幕颜色自定义实例
2016/12/08 Javascript
Mac中安装nvm的教程分享
2017/12/11 Javascript
vue-cli 引入jQuery,Bootstrap,popper的方法
2018/09/03 jQuery
vue实现记事本功能
2019/06/26 Javascript
[00:58]他们到底在电话里听到了什么?
2017/11/21 DOTA
Python3读取文件常用方法实例分析
2015/05/22 Python
pandas 数据索引与选取的实现方法
2019/06/21 Python
python中Ansible模块的Playbook的具体使用
2020/05/28 Python
call在Python中改进数列的实例讲解
2020/12/09 Python
python脚本定时发送邮件
2020/12/22 Python
Python的信号库Blinker用法详解
2020/12/31 Python
Perfumetrader荷兰:香水、化妆品和护肤品在线商店
2017/09/15 全球购物
机械个人求职信范文
2014/01/24 职场文书
素质拓展感言
2014/01/29 职场文书
计算机应届毕业生自荐信范文
2014/02/23 职场文书
人事部专员岗位职责
2014/03/04 职场文书
优秀家长事迹材料
2014/05/17 职场文书
中学清明节活动总结
2014/07/04 职场文书
公司离职证明范本(5篇)
2014/09/17 职场文书
2014年安全员工作总结
2014/11/13 职场文书
餐厅保洁员岗位职责
2015/04/10 职场文书
大学生见习总结报告
2015/06/24 职场文书