浅谈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 相关文章推荐
js 解决“options为空或不是对象”
Dec 22 Javascript
Jquery 插件开发笔记整理
Jan 17 Javascript
jQuery最佳实践完整篇
Aug 20 Javascript
Node.js生成HttpStatusCode辅助类发布到npm
Apr 09 Javascript
javascript手工制作悬浮菜单
Feb 12 Javascript
jquery简单实现外部链接用新窗口打开的方法
May 30 Javascript
原生javascript上传图片带进度条【实例分享】
Apr 06 Javascript
详解JS获取HTML DOM元素的8种方法
Jun 17 Javascript
bootstrap fileinput实现文件上传功能
Aug 23 Javascript
Vue+ElementUI实现表单动态渲染、可视化配置的方法
Mar 07 Javascript
three.js搭建室内场景教程
Dec 30 Javascript
JQuery判断radio单选框是否选中并获取值的方法
Jan 17 jQuery
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
杏林同学录(四)
2006/10/09 PHP
来自phpguru得Php Cache类源码
2010/04/15 PHP
PHP PDOStatement::setAttribute讲解
2019/02/01 PHP
解决FLASH需要点击激活的代码
2006/12/20 Javascript
Javascript延迟执行实现方法(setTimeout)
2010/12/30 Javascript
javascript中直接写php代码的方法
2013/07/31 Javascript
JQuery 实现在同一页面锚点链接之间的平滑滚动
2014/10/29 Javascript
使用cluster 将自己的Node服务器扩展为多线程服务器
2014/11/10 Javascript
jQuery的ready方法详解
2014/11/27 Javascript
jQuery调用WebMethod(PageMethod) NET2.0的方法
2016/04/15 Javascript
通过sails和阿里大于实现短信验证
2017/01/04 Javascript
bootstrapValidator bootstrap-select验证不可用的解决办法
2017/01/11 Javascript
原生js实现无限循环轮播图效果
2017/01/20 Javascript
jQuery.cookie.js实现记录最近浏览过的商品功能示例
2017/01/23 Javascript
详解Nuxt.js Vue服务端渲染摸索
2018/02/08 Javascript
vue addRoutes实现动态权限路由菜单的示例
2018/05/15 Javascript
vue中 this.$set的用法详解
2019/09/06 Javascript
vue 封装 Adminlte3组件的实现
2020/03/18 Javascript
jQuery cookie的公共方法封装和使用示例
2020/06/01 jQuery
python遍历数组的方法小结
2015/04/30 Python
Python实现可自定义大小的截屏功能
2018/01/20 Python
Python实现的本地文件搜索功能示例【测试可用】
2018/05/30 Python
python计算列表内各元素的个数实例
2018/06/29 Python
Django 视图层(view)的使用
2018/11/09 Python
Tensorflow模型实现预测或识别单张图片
2019/07/19 Python
在Python中预先初始化列表内容和长度的实现
2019/11/28 Python
python爬虫数据保存到mongoDB的实例方法
2020/07/28 Python
如何写出高性能的JSP和Servlet
2013/01/22 面试题
New delete 与malloc free 的联系与区别
2013/02/04 面试题
表演方阵解说词
2014/02/08 职场文书
高三毕业典礼演讲稿
2014/05/13 职场文书
物流管理专业自荐信
2014/06/23 职场文书
立案决定书范文
2015/06/24 职场文书
有关三国演义的读书笔记
2015/06/25 职场文书
技术入股合作协议书
2016/03/21 职场文书
PostgreSQL并行计算算法及参数强制并行度设置方法
2022/04/07 PostgreSQL