请注意:这是自学者的笔记,只是个人理解,并非技术分享,如有错误请指正。
"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';
}
}
……
请注意:这是自学者的笔记,只是个人理解,并非技术分享,如有错误请指正。
……