this指向问题
一般情况下this最终指向的是那个调用它的对象
//html代码 <button>点击</button> //js代码 // 1.全局作用域或者普通函数中this指向全局对象window (注意定时器里面的this指向window) console.log(this); //window function fn() { console.log(this); //window } window.fn() setTimeout(function() { console.log(this); //window },1000) // 2.方法调用中谁调用this指向谁 var o = { sayHi: function() { console.log(this); // this指向的是 o 这个对象 } } o.sayHi() var btn = document.querySelector('button') btn.onclick = function() { console.log(this); //this 指向的是btn按钮对象 } btn.addEventListener('click', function(){ console.log(this); //this 指向的是btn按钮对象 }) // 3.构造函数中this指向构造函数的实例 function Fun() { console.log(this); //this 指向的是fun 实例对象 } var fun = new Fun()
JS 执行机制
1.先执行执行栈中的同步任务
2.异步任务(回调函数)放入任务队列中
3.一旦执行栈中的所有同步任务执行完毕 系统就会按次序读取任务队列中的异步任务 于是被读取的异步任务结束等待状态 进入执行栈 开始执行
同步任务: 同步任务都在主线程上执行 形成一个执行栈 异步任务:JS的异步是通过回调函数实现的. 异步函数三种类型: 1.普通事件: click resize等 2.资源加载: load error等 3.定时器: setInterval setTimeout 异步任务相关回调函数添加到任务队列中
不积跬步无以至千里 不积小流无以成江海