1,我们先看看this是个什么东西
那么,我们就直接:alert(this);看看这个this指的是什么东西
<script type="text/javascript"> alert(this);//object window,window 是js老大 //window.alert(this); </script>
这个时候就知道this是object window 。alert(1);是window.alert(1);的简写。所以alert(1);这里前面有个默认的window所以这里的this指向的是object window.
在举个例子
<script type="text/javascript"> function fn1(){ alert(this); } window.fn1(); //fn1(); </script>
在函数里面的this也指的是window。
这个时候我们就可以理解this:指的是调用当前 方法(函数)的那个对象
函数的执行有 fn1();还有点击等事件的时候让函数执行
如:
<input type="button" id="btn1" value="button" /> <script> var oBtn = document.getElementById("btn1"); oBtn.onclick = fn1;//这个函数静静的躺在那里,谁让函数动了,弹出来的就是谁。 </script>
this对当前看的特别重要
<input type="button" id="btn1" value="button" /> <!--alert(this)指的是button,fn1();指的是window--> <script> function fn1(){ alert(this); } var oBtn = document.getElementById("btn1"); oBtn.onclick = function(){ //alert(this);//这里的this指的就是button按钮本身 fn1();//这样的话,前面有个老大哥window这种调用方式就是window。 } </script>
还有一种情况是在元素上直接加事件或者函数,这种情况现在已经是不推荐使用的,但是我们介绍下主要了解this的指向:
如:
<input type="button" id="btn2" onclick="alert(this);" value="button2" />
所以这个里面this是指button
<input type="button" id="btn2" onclick="fn1();" value="button2" /> //fn1()就是上面的一个函数
所以这个里面的this指的是window
这个时候我们总结一下:
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>无标题文档</title> <script> // this : 这个 // this: 指的是调用 当前 方法(函数)的那个对象 function fn1(){ // this } // fn1(); this => window // oDiv.onclick = fn1; this => oDiv /* oDiv.onclick = function (){ fn1(); fn1() 里的this => window }; <div onclick=" this fn1(); "></div> fn1(); 里的 this 指的是 window */ // alert( this ); // object window // window 是 JS “老大” // window.alert( this ); function fn1(){ alert( this ); // window } // fn1(); // window.fn1(); </script> </head> <body> <input id="btn1" type="button" value="按钮" /> <input id="btn2" type="button" onclick=" fn1(); " value="按钮2" /> <script> var oBtn = document.getElementById('btn1'); // oBtn.onclick = fn1; oBtn.onclick = function (){ // this fn1(); }; </script> </body> </html>