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的学习步骤
Feb 23 Javascript
动态创建script标签实现跨域资源访问的方法介绍
Feb 28 Javascript
浅析Javascript中“==”与“===”的区别
Dec 23 Javascript
Javascript设计模式之观察者模式的多个实现版本实例
Mar 03 Javascript
js实现页面跳转的五种方法推荐
Mar 10 Javascript
fullpage.js最后一屏滚动方式
Feb 06 Javascript
Vue刷新修改页面中数据的方法
Sep 16 Javascript
Vue.js构建你的第一个包并在NPM上发布的方法步骤
May 01 Javascript
JavaScript实现英语单词题库
Dec 24 Javascript
js实现消灭星星(web简易版)
Mar 24 Javascript
Postman如何实现参数化执行及断言处理
Jul 28 Javascript
JS实现拖拽元素时与另一元素碰撞检测
Aug 27 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中通过Ajax如何实现异步文件上传的代码实例
2011/05/07 PHP
使用php get_headers 判断URL是否有效的解决办法
2013/04/27 PHP
php获取根域名方法汇总
2014/10/28 PHP
ThinkPHP入库出现两次反斜线转义及数据库类转义的解决方法
2014/11/04 PHP
php通过array_shift()函数移除数组第一个元素的方法
2015/03/18 PHP
判断、添加和删除WordPress置顶文章的相关PHP函数小结
2015/12/10 PHP
PHP会员找回密码功能的简单实现
2016/09/05 PHP
php+redis在实际项目中HTTP 500: Internal Server Error故障排除
2017/02/05 PHP
laradock环境docker-compose操作详解
2019/07/29 PHP
js的alert弹出框出现乱码解决方案
2013/09/02 Javascript
js关于精确计算和数值格式化以及直接引js文件
2014/01/28 Javascript
JS制作适用于手机和电脑的通知信息效果
2016/10/28 Javascript
Jquery树插件zTree实现菜单树
2017/01/24 Javascript
Three.js如何用轨迹球插件(trackball)增加对模型的交互功能详解
2017/09/25 Javascript
关于vue单文件中引用路径的处理方法
2018/01/08 Javascript
vuex 解决报错this.$store.commit is not a function的方法
2018/12/17 Javascript
微信小程序自定义弹窗实现详解(可通用)
2019/07/04 Javascript
bootstrap Table实现合并相同行
2019/07/19 Javascript
vue项目中监听手机物理返回键的实现
2020/01/18 Javascript
再也不怕 JavaScript 报错了,怎么看怎么处理都在这儿
2020/12/09 Javascript
微信小程序实现购物车小功能
2020/12/30 Javascript
Python实现3行代码解简单的一元一次方程
2014/08/18 Python
Python实现PS图像调整之对比度调整功能示例
2018/01/26 Python
python3利用venv配置虚拟环境及过程中的小问题小结
2018/08/01 Python
在Python中使用gRPC的方法示例
2018/08/08 Python
Python实现钉钉订阅消息功能
2020/01/14 Python
使用keras2.0 将Merge层改为函数式
2020/05/23 Python
安装pyecharts1.8.0版本后导入pyecharts模块绘图时报错: “所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 ”的解决方法
2020/08/18 Python
python中os.remove()用法及注意事项
2021/01/31 Python
HTML5中使用postMessage实现两个网页间传递数据
2016/06/22 HTML / CSS
资产经营总监岗位职责范文
2013/12/01 职场文书
英语演讲稿3分钟
2014/04/29 职场文书
2014党员学习习主席讲话思想汇报
2014/09/15 职场文书
2015年乡镇信访工作总结
2015/04/07 职场文书
2016秋季幼儿园开学寄语
2015/12/03 职场文书
IDEA 2022 Translation 未知错误 翻译文档失败
2022/04/24 Java/Android