美文网首页
this 关键字指向问题

this 关键字指向问题

作者: FConfidence | 来源:发表于2018-01-21 15:56 被阅读11次

    this关键字

    js中this代表的是当前行为执行的主体, js中context代表的就是当前行为执行的环境
    this是谁和函数在哪儿定义的以及在哪儿执行的都没有或任何关系, 只和执行主体有关

    • 函数执行, 首先看函数前面是否有".", 前面是谁, this就是谁, 没有的话指向全局对象global
    • 自执行函数中的this,永远是window
    • 给元素的某一个事件绑定方法, 当事件触发的时候, 执行对应的方法, 方法中的this是当前元素
         // 第一种情况
         function fn() {
             console.log(this)
         }
      
         var obj = {fn:fn}
      
         fn(); // window
         obj.fn(); // // obj
      
         function sum() {
             fn()
         }
         sum() // window
      
         // 第二种情况
         var oo = {
             sum: function() {
                 console.log('this in sum', this)
                 fn();
             }
         }
         oo.sum(); // this in sum=oo, window
      
         // 第三种情况 fn中的this指的是当前点击Node对象
         document.getElementById('#div').onclick = fn;
      
         document.getElementById('#div').onclick = function() {
             console.log(this); // 这个this指的是 当前div Node对象
      
             // 自执行函数
             fn(); // fn中的this指的是window
         }
      
         // 第四种情况: 在构造函数当中(类), 出现的this.property = property 这里的this指的是当前类的实例
         function Person(name) {
             this.name = name;
         }
         var p1 = new Person('ffff') // 创建p1的时候 this指p1
         var p2 = new Person('dddd') // 创建p2的时候 this指p2
      

    相关文章

      网友评论

          本文标题:this 关键字指向问题

          本文链接:https://www.haomeiwen.com/subject/lrxqaxtx.html