请注意:这是自学者的笔记,只是个人理解,并非技术分享,如有错误请指正。

"this"的意思,简单而言,就是"这个",也就是"当前"。谁调用它,他就会指向谁。
在scirpt内直接调用,比如 alert(this),其实也可以写为window.alert(this),输出的就会是window;

可以这样理解:

写一个按钮:

<input id="btn1" type="button" value="按钮"/>

在script下定义一个变量
var oBtn = document.getElementById("btn1");

定义一个函数
function fn() {
  alert(this);
}

定义一个点击事件:

情况1:oBtn.onclick = fn;
首先,我们需要明确一点,函数只有当被调用的时候才能执行。
网页加载的过程就是读取代码的过程,当代码读到oBtn.onclick = fn;的时候,会读取到fn()执行的前提是oBtn.onclick,也就是按钮的点击事件才会让fn()执行,此时alert(this)中输出的this指的是让它执行的botton

情况2:oBtn.onclick = fn();

首先,我们需要明确一点,函数只有当被调用的时候才能执行。而任何函数如果写成fn();这种形式,这本身就是一种调用。

网页加载的过程就是读取代码的过程,当代码读到oBtn.onclick = fn();的时候,fn()会直接执行,让它执行的并非button,因为我们定义的是点击事件才执行,此时让fn()执行的是window。也就是window.fu();

可以这样简单理解:当this放在放个函数中使用的时候,谁让这个函数调用,这里的this指向的就是谁。

实例:

//存放div的数组

var aDiv = document.getElementsByTagName('div');

//鼠标滑过当前div的时候,给当前div添加display:none; 使图片消失

for (var i=0; 1<100; i++){
  aDiv[i].onmouseover = function (){
    this.style.display = 'none';
  }
}

……

请注意:这是自学者的笔记,只是个人理解,并非技术分享,如有错误请指正。

……

初学者自学笔记-this的用法的更多相关文章

  1. 【C++初学者自学笔记一】(把自己刚学到的东西做一下总结,如果有哪些地方不足请留言指正)

    这是我写的第一个博客关于C++的一些笔记,我不会写的太深奥,因为这样很多人会看不懂(我刚开始学C语言深受其害).个人觉得C++这门语言有些类似于C语言但是有些函数的用法还是有不一样的.C语言中的头文件 ...

  2. 【C++初学者自学笔记三】哑元函数、缺省参数、内联函数(模块二,PS:需要用到重载函数)

    一,哑元函数:一个函数的参数只有类型没有名字的则这个参数称之为哑元.类似于void fun(int); 功能:1保持向前的兼容性,比方说我们需要做成一个成品,然后成品是会不断的更新第一代第二代,当我们 ...

  3. 【C++初学者自学笔记二】函数重载(模块一)

    1.概念:同意作用域的一组参数列表不同,函数名相同的函数,这组函数叫函数重载(C语言是不能定义相同名称的函数,但是C++可以允许定义). 2作用:重载函数通常来命名一组功能相似的函数,这样做减少了函数 ...

  4. python自学笔记

    python自学笔记 python自学笔记 1.输出 2.输入 3.零碎 4.数据结构 4.1 list 类比于java中的数组 4.2 tuple 元祖 5.条件判断和循环 5.1 条件判断 5.2 ...

  5. JAVA自学笔记05

    JAVA自学笔记05 1.方法 1)方法就是完成特定功能的代码块,类似C语言中的函数. 2)格式: 修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2,-){ 函数体; return ...

  6. JAVA自学笔记06

    JAVA自学笔记06 1.二维数组 1)格式: ①数据类型[][]数组名 = new 数据类型[m][n]; 或 数据类型[]数组名[]=new 数据类型[m][n]; m表示这个二维数组有多少个一维 ...

  7. JAVA自学笔记18

    JAVA自学笔记18 1.Map接口: 1)功能: 2) Map<String,String>m=new HashMap<String,String>(); //添加元素,元素 ...

  8. JAVA自学笔记27

    JAVA自学笔记27 1.类的加载 1)当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来实现对这个类进行初始化. ①加载:就是指将class文件读入内存,并为之创 ...

  9. TS 自学笔记(二)装饰器

    TS 自学笔记(二)装饰器 本文写于 2020 年 9 月 15 日 上一篇 TS 文章已经是很久之前了.这次来讲一下 TS 的装饰器. 对于前端而言,装饰器是一个陌生的概念,但是对于 Java.C# ...

随机推荐

  1. HTML5 Canvas核心技术—图形、动画与游戏开发.pdf7

    性能 运行putImageData()比drawImage()慢,同等条件下优先考虑drawImage() 操作图像数据需要遍历大量数据,应该注意几点: 1)避免在循环体中直接访问对象属性,应当保存在 ...

  2. HTML5 Canvas核心技术—图形、动画与游戏开发.pdf1

    canvas元素可以说是HTML5元素中功能最强大的一个,它真正的能力是通过Canvas的context对象(绘图上下文)表现出来的 fillText()方法使用fillStyle属性来填充文本中的字 ...

  3. JavaScript高级程序设计48.pdf

    设备中的键盘事件 任天堂Wii等设备可以通过键码知道用户按下了哪个键 复合事件 复合事件是DOM3级事件新添加的一类事件,用于处理IME的输入序列.IME(Input Method Editor,输入 ...

  4. javascrip中array使用

    一.测试数组长度是使用arr.length;(注:使用delete不会修改数组的length属性) 二.数组方法 1.join() Array.join()方法将数组所有元素都转化为字符串连接在一起, ...

  5. Lesson: Introduction to JAXP

    The Java API for XML Processing (JAXP) is for processing XML data using applications written in the ...

  6. 8-3-COMPETITION

    链接:8.3比赛 这次是动态规划里的LCS,LIS,LCIS专场....... A.Common Subsequence 就是:给出两个字符串,求出其中的最长公共子序列的长度~LCS 代码: //me ...

  7. jsp中的forward和redirect的区别

    转自http://blog.163.com/tsing_hua/blog/static/139622224201101110836644/ 一.调用方式 我们知道,在servlet中调用转发.重定向的 ...

  8. zookeeper与activemq最新存储replicatedLevelDB整合

    测试环境:三台VM虚拟机centos6.4 64位 mini版,IP分别为192.168.1.191/192/193. 测试目的:测试activemq的failover以及与zookeeper的整合 ...

  9. Winform 换皮肤

    winform换肤流程如下: (1)程序入口,添加以下代码: //换肤 private void Skinjsj() { DevExpress.UserSkins.BonusSkins.Registe ...

  10. "http-8080-3" java.lang.OutOfMemoryError: PermGen space C3P0死锁的问题

    Exception in thread ""http-bio-8080"-exec-1" java.lang.OutOfMemoryError: PermGen ...