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的高性能TreeView(asp.net)
Feb 23 Javascript
JavaScript实现页面实时显示当前时间的简单实例
Jul 20 Javascript
js中创建对象的几种方式示例介绍
Jan 26 Javascript
php析构函数的具体用法小结
Mar 11 Javascript
jQuery制作的别致导航有阴影背景高亮模式窗口
Apr 15 Javascript
javascript特殊日历控件分享
Mar 07 Javascript
jQuery中选择器的基础使用教程
May 23 Javascript
自己封装的一个简单的倒计时功能实例
Nov 23 Javascript
基于vue+canvas的excel-like组件实例详解
Nov 28 Javascript
对vue下点击事件传参和不传参的区别详解
Sep 15 Javascript
关于layui 弹出层一闪而过就消失的解决方法
Sep 09 Javascript
利用node.js开发cli的完整步骤
Dec 29 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
php4的session功能评述(一)
2006/10/09 PHP
Php无限级栏目分类读取的实现代码
2014/02/19 PHP
php过滤HTML标签、属性等正则表达式汇总
2014/09/22 PHP
PHP代码重构方法漫谈
2018/04/17 PHP
Yii 框架控制器创建使用及控制器响应操作示例
2019/10/14 PHP
使用Entrust扩展包在laravel 中实现RBAC的功能
2020/03/16 PHP
JS 删除字符串最后一个字符的实现代码
2014/02/20 Javascript
javascript变量声明实例分析
2015/04/25 Javascript
jquery实现简单的轮换出现效果实例
2015/07/23 Javascript
javascript简单比较日期大小的方法
2016/01/05 Javascript
React.js入门实例教程之创建hello world 的5种方式
2016/05/11 Javascript
JS作为值的函数用法示例
2016/06/20 Javascript
NodeJS实现图片上传代码(Express)
2017/06/30 NodeJs
angular.extend方法的具体使用
2017/09/14 Javascript
JavaScript深拷贝和浅拷贝概念与用法实例分析
2018/06/07 Javascript
详解node和ES6的模块导出与导入
2020/02/19 Javascript
javascript设计模式 ? 迭代器模式原理与用法实例分析
2020/04/17 Javascript
[01:16:37]【全国守擂赛】第三周决赛 Dark Knight vs. 一个弱队
2020/05/04 DOTA
连接Python程序与MySQL的教程
2015/04/29 Python
Python调用ctypes使用C函数printf的方法
2017/08/23 Python
Python使用Pickle库实现读写序列操作示例
2018/06/15 Python
tensorflow学习教程之文本分类详析
2018/08/07 Python
Python使用matplotlib绘制三维图形示例
2018/08/25 Python
使用pandas实现csv/excel sheet互相转换的方法
2018/12/10 Python
用Python实现BP神经网络(附代码)
2019/07/10 Python
python 30行代码实现蚂蚁森林自动偷能量
2021/02/08 Python
美国葡萄酒网上商店:Martha Stewart Wine Co.
2019/03/17 全球购物
沃达丰英国有限公司:Vodafone英国
2019/04/16 全球购物
入党自我评价范文
2014/02/02 职场文书
《陶罐和铁罐》教学反思
2014/02/19 职场文书
《月球之谜》教学反思
2014/04/10 职场文书
三年级班级文化建设方案
2014/05/04 职场文书
护士实习求职信
2014/06/22 职场文书
2014年党员个人剖析材料
2014/10/08 职场文书
上个世纪50年代的可穿戴技术:无线电帽子
2022/02/18 无线电
Python中的turtle画箭头,矩形,五角星
2022/03/16 Python