This关键字的一些更新的理解

this是Javascript中一个非常重要的关键字,正确的使用this能够使我们的程序效率得到提升。之前,对于this的认识还存在一些误区,今天看了一篇文章之后又有了一些深入的了解。

this的所有者。

 一般情况下,this是指向正在执行的函数本身,或者是,指向函数所属的对象。如

function dosomething(){
   this.style.color = 'red';
}

 函数执行时,this指向的就是window对象。而:

var dosomething = function(){
   this.style.color = 'red';
}

this是指向dosomething这个对象的;

很不幸,window对象没有style属性,所以这个dosomething这个函数直接执行就会导致错误,我们如果想正确应用this,我们就需要将函数复制到对象的属性上去。

例如:element.onclick = dosomething;

总结一下,通过复制正确使用this的例子有:

element.onclick = dosomething;
element.addEventListener('click',dosomething,false);
 
element.onclick = function(){ this.style.color = 'red'; };
<element onclick='javascript:this.style.color = red;' />

通过直接引用使用this的例子:

element.onclick = function(){ dosomething(); };
 
element.attachEvent('onclick',dosomething);
<element onclick = "dosomething();" />

这样的引用,this都会被指向window对象而导致,执行失败,所以在平时的应用中是要引起注意的。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏LEo的网络日志

python技巧分享(七)

34580
来自专栏大神带我来搬砖

在python中像java一样反射——动态实例化指定包下面所有的类

在项目中需要在python中把某个包下面所有的类都实例化一个对象,把这些对象放到一个集合中,在java中可以通过反射机制来实现,先获得这个包下面所有的Class...

44370
来自专栏MasiMaro 的技术博文

C++继承

在封装的过程中,我们发现有很多地方有问题,比如我们在封装Windows API 的过程中,每个窗口都有各自的消息处理,而我们封装时不同的窗口要针对不同的消息而编...

9620
来自专栏zlmai的专栏

C++中关于几种输入方法的总结

C++中有很多关于输入的函数,比如cin、cin.get()、cin.getline()、getline()、gets()等等,很容易搞混,下面分别总结下,欢迎...

24050
来自专栏程序员互动联盟

【C语言基础】内存的初始化

我们编写C语言的时候需要给变量申请一块内存区域,当我们创建一个内存区域的时候,内存中的数据十有八九是乱七八糟的(因为其他代码用过后遗留的数据并没有及时清掉) i...

39560
来自专栏乐百川的学习频道

Python学习笔记 输入输出

str和repr内置函数 在介绍Python的输入输出之前,我们先来介绍两个内置函数,str()和repr(),它们都用来输出对象的字符串形式。不过它们之间有一...

35680
来自专栏云霄雨霁

Java虚拟机--Class文件结构

17850
来自专栏栗霖积跬步之旅

1.7停止线程

线程停止:在线程处理完任务之前,停掉正在做的操作,也就是放弃当前操作。 在java中有三种方法可以实现线程的停止: 使用退出标志,使线程正常退出,也就是当run...

21400
来自专栏Celebi的专栏

C/C++ 学习笔记七(内存管理)

工作中经常使用到C/C++,为对C有个比较深刻的了解,重新拾起学习C的任务。在看书的同时,记录下思考的过程,也记录下重要的知识点。

30300
来自专栏小樱的经验随笔

【Python学习笔记之一】Python关键字及其总结

前言 最近在学习Java Sockst的时候遇到了一些麻烦事,我觉得我很有必要重新研究学习Python这种脚本语言,参考大神的经验,淘到了一本学习Python的...

30960

扫码关注云+社区

领取腾讯云代金券