• tjs 在嵌套函数中this关键字引用head对象


    var myObject = {
      func1: function() {
        console.log(this); // myObject
        var func2  = function() {
           console.log(this); // window, 从此处开始,this都是window对象了
           var func3 = function() {
             console.log(this); // window, head
           }();
        }();
      }
    }
    
    myObject.func1();
    

      

    var foo = {
      fun: function(bar) {
        console.log(this) // foo
        bar(); // window
      }
    }
    
    foo.fun(function() {console.log(this)})
    

      

    在ES3中当this值得宿主函数被封装在另一个函数的内部或在另一个函数的上下文中被调用时,this值将永远是对head对象的引用

    this在ES5中是固定的

    解决this的几个方法

    var myObject =  {
      myProp: 'hah',
      myMeth: function() {
        var that = this; // myMeth作用域内,保存this引用(也就是myObject)
        var helper = function() { // 子函数
          console.log(that.myProp); // hah
          console.log(this); // window
        }();
      }
    }
    myObject.myMeth();
    var myObject = {};
    
    var myFunction = function(p1, p2) {
      // 调用函数的时候,通过call()将this指向myObject
      this.foo = p1;
      this.bar = p2;
      console.log(this);
    };
    
    myFunction.call(myObject, 'foo', 'bar');
    
    console.log(myObject); // Object {foo = 'foo', bar = 'bar'}
    

      

    var Person = function(x) {
      if(x) this.fullName = x;
    }
    
    // 原型方法内的this关键字引用构造函数实例
    Person.prototype.whatIsMyFullName = function() {
      return this.fullName;
    }
    
    var cody = new Person('cody lindley');
    
    console.log(cody.whatIsMyFullName()); // cody lindley
    
    Object.prototype.fullName = 'John Doe';
    var john = new Person(); // 未传参数
    
    console.log(john.whatIsMyFullName()); // John Doe
    

      

  • 相关阅读:
    考试
    aws代理
    ansible debug
    apollo docker 安装 使用镜像 idoop/docker-apollo
    java jvm 内存监控工具visualvm 的使用
    kong dashboard UI 的使用 (使用kong 对服务反向代理,以及解决跨域问题)
    git账号
    kong Gateway && PostgreSQL 的安装(docker)
    apollo 配置中心的安装与使用
    springboot 开发模式 dev
  • 原文地址:https://www.cnblogs.com/daqianduan/p/4383215.html
Copyright © 2020-2023  润新知