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 相关文章推荐
最新优化收藏到网摘代码(digg,diigo)
Feb 07 Javascript
基于jQuery的固定表格头部的代码(IE6,7,8测试通过)
May 18 Javascript
浅谈jQuery中 wrap() wrapAll() 与 wrapInner()的差异
Nov 12 Javascript
浅析javascript操作 cookie对象
Dec 26 Javascript
JS实现可缩放、拖动、关闭和最小化的浮动窗口完整实例
Mar 04 Javascript
js实现随屏幕滚动的带缓冲效果的右下角广告代码
Sep 04 Javascript
谈谈我对JavaScript中typeof和instanceof的深入理解
Dec 25 Javascript
js 实现一些跨浏览器的事件方法详解及实例
Oct 27 Javascript
基于jquery实现多级菜单效果
Jul 25 jQuery
vue.js  父向子组件传参的实例代码
Oct 29 Javascript
React Router v4 入坑指南(小结)
Apr 08 Javascript
记一次用vue做的活动页的方法步骤
Apr 11 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对象转换为数组函数(递归方法)
2012/02/04 PHP
探讨PHP调用时间格式的参数详解
2013/06/06 PHP
php生成随机字符串可指定纯数字、纯字母或者混合的
2014/04/18 PHP
php环境无法上传文件的解决方法
2014/04/30 PHP
php实现基于pdo的事务处理方法示例
2017/07/21 PHP
laravel框架如何设置公共头和公共尾
2019/10/22 PHP
Extjs学习笔记之五 一个小细节renderTo和applyTo的区别
2010/01/07 Javascript
JS 对象介绍
2010/01/20 Javascript
JavaScript OOP面向对象介绍
2010/12/02 Javascript
能说明你的Javascript技术很烂的五个原因分析
2011/10/28 Javascript
js函数调用常用方法详解
2012/12/03 Javascript
图片旋转、鼠标滚轮缩放、镜像、切换图片js代码
2020/12/13 Javascript
Bootstrap表单布局样式源代码
2016/07/04 Javascript
jquery的父、子、兄弟节点查找,节点的子节点循环方法
2016/12/07 Javascript
js实现hashtable的赋值、取值、遍历操作实例详解
2016/12/25 Javascript
JavaScript中捕获与冒泡详解及实例
2017/02/03 Javascript
JS使用ActiveXObject实现用户提交表单时屏蔽敏感词功能
2017/06/20 Javascript
js实现随机抽奖
2020/03/19 Javascript
[03:02]辉夜杯主赛事第二日 每日之星
2015/12/27 DOTA
Python解决鸡兔同笼问题的方法
2014/12/20 Python
对Python新手编程过程中如何规避一些常见问题的建议
2015/04/01 Python
Python爬取网易云音乐上评论火爆的歌曲
2017/01/19 Python
Python实现的txt文件去重功能示例
2018/07/07 Python
对python中类的继承与方法重写介绍
2019/01/20 Python
对python中矩阵相加函数sum()的使用详解
2019/01/28 Python
Python django框架应用中实现获取访问者ip地址示例
2019/05/17 Python
python实现几种归一化方法(Normalization Method)
2019/07/31 Python
django项目简单调取百度翻译接口的方法
2019/08/06 Python
MaBelle玛贝尔香港官网:香港钻饰连锁店
2019/09/09 全球购物
工商管理实习自我鉴定
2013/09/28 职场文书
弘扬雷锋精神演讲稿
2014/05/10 职场文书
优秀少先队辅导员先进事迹材料
2014/05/18 职场文书
2014年助理政工师工作总结
2014/12/19 职场文书
2015年客服工作总结范文
2015/04/02 职场文书
漂亮妈妈观后感
2015/06/08 职场文书
公司会议开幕词
2016/03/03 职场文书