js this
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <div id="btn" style="width:100px;height: 20px;background-color: #c3c3c3;"> <span id="txtnum">0</span> </div> <!-- 一、函数作用域查找:看函数定义在哪个作用域下,与函数在哪执行无关 二、this 1、函数中this与它在哪执行的代码没有任何关系;2、若函数名前有点则this就是点前的对象 若没有就是window 3、自执行函数永远是window 4、给Dom绑定事件时 this就是该元素 5、类构造函数中this是当前类的实例 --> <script type="text/javascript"> var num = 12; function fun() { var num = 120; return function() { console.log(num); }; }; var f = fun(); f(); //120 ! function() { var num = 100; f(); //120 } function fn() { var i = 10; return function(n) { console.log(n + (++i)); } }; var f = fn(); f(10); //10+11 f(20); //20+12 fn()(10); //10+11 fn()(20); //20+11 function thsFun() { console.log(this) } thsFun(); //this->window //document.getElementById("div").onclick = thsFun; //this->div Dom //document.getElementById("div").onclick = function() { // fn(); //this->window // } var obj = { fn: thsFun }; obj.fn(); //this->obj function test() { thsFun(); }; test(); //this->window var oo = { sum: function() { console.log(this); thsFun(); } }; oo.sum(); //this->window var divbtn = document.getElementById("btn"); var txtspan = document.getElementById("txtnum"); divbtn.count = 0; divbtn.onclick = function() { // var count = parseInt(txtspan.innerHTML); // count++; txtspan.innerHTML = ++this.count; } </script> </body> </html>