浅谈javascript中this在事件中的应用


Posted in Javascript onFebruary 15, 2015

this关键字在javascript中是非常强大的,但是如果你不清楚它是怎么工作的就很难使用它.

function dosomething(){ this.style.color="#fff"; }

上面这段代码中的this指向什么呢,运行dosomething()会输出什么呢?

在javascript中,this总是指向当前执行的这个函数,或者把函数作为方法调用的这个对象.当我们在页面上定义dosomething()这个方法后,this的所有者就是当前的页面,或者说是全局对象.

所以我们执行dosomething()这个函数,会引发错误.因为函数的this指向的是全局对象window,而window对象没有style属性.

复制:

element.onclick=dosomething;

dosomething()现在被整个复制到onclick属性上作为一个方法.所以如果这个事件执行的话,this就指向这个HTML元素,相应HTML元素的color就会改变.dosomething每次复制到事件上,this就会指向当前执行这个方法的html元素.

引用:

<element onclick="dosomething()">

此时你没有复制这个方法,而是引用了这个方法,onclick属性并不包含实际的方法,仅仅只是一个方法的调用.当我们执行这个方法时,this再次指向全局window对象并引发错误.

以上就是本文的全部内容了,有需要的小伙伴好好来研究下吧。

Javascript 相关文章推荐
仅IE6/7/8中innerHTML返回值忽略英文空格的问题
Apr 07 Javascript
window.open以post方式将内容提交到新窗口
Dec 26 Javascript
Extjs4 消息框去掉关闭按钮(类似Ext.Msg.alert)
Apr 02 Javascript
JS获取时间的相关函数及时间戳与时间日期之间的转换
Feb 04 Javascript
js在ie下打开对话窗口的方法小结
Oct 24 Javascript
详解jquery easyui之datagrid使用参考
Dec 05 Javascript
js replace()去除代码中空格的实例
Feb 14 Javascript
canvas绘制一个常用的emoji表情
Mar 30 Javascript
深入理解Commonjs规范及Node模块实现
May 17 Javascript
JS返回顶部实例代码
Aug 09 Javascript
5分钟快速掌握JS中var、let和const的异同
Sep 19 Javascript
Vue-cli打包后部署到子目录下的路径问题说明
Sep 02 Javascript
javascript使用正则表达式实现去掉空格之后的字符
Feb 15 #Javascript
分享一个自己写的简单的javascript分页组件
Feb 15 #Javascript
Linux下编译安装php libevent扩展实例
Feb 14 #Javascript
jQuery中extend函数详解
Feb 13 #Javascript
JavaScript将Web页面内容导出到Word及Excel的方法
Feb 13 #Javascript
javascript上下方向键控制表格行选中并高亮显示的方法
Feb 13 #Javascript
JS+CSS实现可拖拽的漂亮圆角特效弹出层完整实例
Feb 13 #Javascript
You might like
修复ShopNC使用QQ 互联时提示100010 错误
2015/11/08 PHP
php + WebUploader实现图片批量上传功能
2019/05/06 PHP
dotopAlert 提示用户需安装播放器的代码
2012/09/17 Javascript
JS复制内容到剪切板的实例代码(兼容IE与火狐)
2013/11/19 Javascript
JavaScript设计模式之外观模式实例
2014/10/10 Javascript
jQuery切换所有复选框选中状态的方法
2015/07/02 Javascript
js实现select跳转菜单新窗口效果代码分享(超简单)
2015/08/21 Javascript
Jquery为DIV添加click事件的简单实例
2016/06/02 Javascript
漫谈JS引擎的运行机制 你应该知道什么
2016/06/15 Javascript
详解在Vue中有条件地使用CSS类
2017/09/30 Javascript
利用vue+elementUI实现部分引入组件的方法详解
2017/11/22 Javascript
Angular2使用vscode断点调试ts文件的方法
2017/12/13 Javascript
vue history 模式打包部署在域名的二级目录的配置指南
2019/07/02 Javascript
ES6之Proxy的get方法详解
2019/10/11 Javascript
详解JavaScript 异步编程
2020/07/13 Javascript
Element DateTimePicker日期时间选择器的使用示例
2020/07/27 Javascript
[02:39]DOTA2国际邀请赛助威团西雅图第一天
2013/08/08 DOTA
Python2.x版本中maketrans()方法的使用介绍
2015/05/19 Python
python递归全排列实现方法
2018/08/18 Python
Python3.5 处理文本txt,删除不需要的行方法
2018/12/10 Python
python跳出双层for循环的解决方法
2019/06/24 Python
python GUI库图形界面开发之PyQt5选项卡控件QTabWidget详细使用方法与实例
2020/03/01 Python
Python爬虫实现vip电影下载的示例代码
2020/04/20 Python
Python+OpenCV图像处理——图像二值化的实现
2020/10/24 Python
python openCV自制绘画板
2020/10/27 Python
香港太阳眼镜网上商店:SmartBuyGlasses香港
2016/07/22 全球购物
优秀毕业生自我鉴定
2014/01/19 职场文书
授权委托书
2014/07/31 职场文书
活动总结新闻稿
2014/08/30 职场文书
尊老爱幼演讲稿
2014/09/04 职场文书
2015年青年教师工作总结
2015/05/25 职场文书
Apache压力测试工具的安装使用
2021/03/31 Servers
HTML中table表格拆分合并(colspan、rowspan)
2021/04/07 HTML / CSS
linux中nohup和后台运行进程查看及终止
2021/06/24 Python
python中出现invalid syntax报错的几种原因分析
2022/02/12 Python
SQL Server表分区降低运维和维护成本
2022/04/08 SQL Server