BOM ------ this指向问题

简介: BOM ------ this指向问题

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
          异步任务相关回调函数添加到任务队列中

不积跬步无以至千里 不积小流无以成江海

相关文章
|
6月前
数组篇----485
数组篇----485
|
6月前
数组篇----495
数组篇----495
|
11月前
|
JavaScript Go
BOM ------ history对象
BOM ------ history对象
|
11月前
|
JavaScript
BOM ------ offset 实例
BOM ------ offset 实例
|
11月前
|
JavaScript
BOM ------ 立即执行函数
BOM ------ 立即执行函数
|
11月前
|
JavaScript
BOM ------ offset (元素偏移量)
BOM ------ offset (元素偏移量)
|
11月前
|
JavaScript
BOM ------ location对象 & navigator对象
BOM ------ location对象 & navigator对象
|
11月前
|
JavaScript
BOM ------ client 系列
BOM ------ client 系列
|
11月前
|
JavaScript
BOM ------ offset 和 style的区别
BOM ------ offset 和 style的区别
|
11月前
|
JavaScript 前端开发 内存技术
BOM ------ Window 常见事件
BOM ------ Window 常见事件