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 相关文章推荐
JavaScript cookie的设置获取删除详解
Feb 11 Javascript
javascript中call和apply的用法示例分析
Apr 02 Javascript
js跨域请求数据的3种常用的方法
Dec 01 Javascript
js判断文本框输入的内容是否为数字
Dec 23 Javascript
js实现上传图片及时预览
May 07 Javascript
AngularJS入门教程之MVC架构实例分析
Nov 01 Javascript
easyUI实现类似搜索框关键词自动提示功能示例代码
Dec 27 Javascript
jquery实现简单实用的轮播器
May 23 jQuery
Node.js搭建WEB服务器的示例代码
Aug 15 Javascript
vue2 设置router-view默认路径的实例
Sep 20 Javascript
vue-cli中安装方法(图文详细步骤)
Dec 12 Javascript
Vue.js计算机属性computed和methods方法详解
Oct 12 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
解析用PHP读写音频文件信息的详解(支持WMA和MP3)
2013/05/10 PHP
PHP中你应该知道的require()文件包含的正确用法
2015/06/12 PHP
PHP调用API接口实现天气查询功能的示例
2017/09/21 PHP
根据地区不同显示时间的javascript代码
2007/08/13 Javascript
html的DOM中Event对象onabort事件用法实例
2015/01/21 Javascript
jQuery实现图片与文字描述左右滑动自动切换的方法
2015/07/27 Javascript
jquery无限级联下拉菜单简单实例演示
2015/11/23 Javascript
两种JavaScript的AES加密方式(可与Java相互加解密)
2016/08/02 Javascript
vue-resource 拦截器使用详解
2017/02/21 Javascript
微信小程序 下拉列表的实现实例代码
2017/03/08 Javascript
富文本编辑器vue2-editor实现全屏功能
2019/05/26 Javascript
js刷新页面location.reload()用法详解
2019/12/09 Javascript
解决Vue 移动端点击出现300毫秒延迟的问题
2020/07/21 Javascript
python调用Moxa PCOMM Lite通过串口Ymodem协议实现发送文件
2014/08/15 Python
Python实现简单登录验证
2016/04/13 Python
Python中的with语句与上下文管理器学习总结
2016/06/28 Python
TF-IDF算法解析与Python实现方法详解
2017/11/16 Python
利用python实现AR教程
2019/11/20 Python
python 变量初始化空列表的例子
2019/11/28 Python
keras和tensorflow使用fit_generator 批次训练操作
2020/07/03 Python
html5在移动端的屏幕适应问题示例探讨
2014/06/15 HTML / CSS
瑞典快乐袜子:Happy Socks
2018/02/16 全球购物
数控专业应届生求职信
2013/11/27 职场文书
大学生职业生涯规划书模板
2014/01/18 职场文书
社区居务公开实施方案
2014/03/27 职场文书
保洁公司服务承诺书
2014/05/28 职场文书
旅游专业毕业生自荐书
2014/06/30 职场文书
防邪知识进家庭活动方案
2014/08/26 职场文书
联谊活动总结
2014/08/28 职场文书
2015年光棍节活动总结
2015/03/24 职场文书
撤诉状格式范本
2015/05/19 职场文书
学校运动会加油词
2015/07/18 职场文书
你会写报告?产品体验报告到底该怎么写?
2019/08/14 职场文书
如何利用Matlab制作一款真正的拼图小游戏
2021/05/11 Python
Java基础之详解HashSet的使用方法
2021/06/30 Java/Android
tomcat默认最大连接数及相关调整方法
2022/05/06 Servers