先看以下例子
1.我们直接调用this看看指向的是谁
alert(this);//指向window
2.在函数中直接调用看看指向的是谁
function fn(){ alert(this); } fn();//window
3.将函数复制给变量看看指向的是谁
var obj = function(){ alert(this); } obj();//window
为什么指向的window呢?通过前面的学习我们知道全局变量都是window对象下的属性,alert也是window的一个属性,所以第一个例子可以写成这样
window.alert(this);
而this的定义就是:谁调用的它,它就指向谁
函数名称也是window的一个属性所以也可以写成这样
function fn(){ alert(this); } window.fn();//window
因为都是window调用的所以指向window
再来看一个例子:
<!DOCTYPE html> <html lang=""> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>this指向问题</title> <style type="text/css"> </style> </head> <body> <input type="button" id="btn" value="clickme"> <script> var oBtn = document.getElementById("btn"); oBtn.onclick=function(){ alert(this); } </script> </body> </html>
上面的this指向的就是input,因为是input调用了它
(待续