• this


    用自然语言的角度理解JavaScript中的this关键字:http://blog.leapoahead.com/2015/08/31/understanding-js-this-keyword/

    使用Function.prototype.bind把function绑定到某个对象:
    //每个函数都有一个bind方法:Function.prototype.bind
    xiaoming.run = xiaoming.run.bind(xiaoming);
    多次bind之后,this对象是第一次绑定的obj;
    使用call和apply也是可以的;
    call/apply 和 bind避免混用;
    严格模式下,调用方法没有主语,this为undefined

    没法看到定义的函数是被谁调用的:

    window.val = 'window val';
    
    var obj = {
      val: 'obj val',
      foo: function() {
        $('#text').bind('click', function() {
        //this为$('#text') console.log(this.val); }); } }; obj.foo();

    想要在上面的回调函数里面使用obj的val值,除了直接写obj.val之外,还可以在foo方法中用一个新的变量that来保存foo运行时this的值:

    window.val = 'window val';
    
    var obj = {
      val: 'obj val',
      foo: function() {
        var that = this; // 保存this的引用到that,这里的this实际上就是obj
        $('#text').bind('click', function() {
          console.log(that.val); // 输出:obj val
        });
      }
    };
    
    obj.foo();
    

    另外一种方法就是为该匿名函数bind:

    window.val = 'window val';
    
    var obj = {
      val: 'obj val',
      foo: function() {
        $('#text').bind('click', function() {
          console.log(this.val); // 输出:obj val
        }.bind(this));
      }
    };
    
    obj.foo();
    

      

      

      

  • 相关阅读:
    spring中的Filter使用
    跨站脚本(XSS)攻击
    RepeatSubmitInterceptor extends HandlerInterceptorAdapter
    理解TCP
    Github(第一次尝试)
    MVC(实战二:网址映射)
    MVC(实战一)
    MVC(基础二)
    WinFrom和WebFrom的区别
    MVC(基础一)
  • 原文地址:https://www.cnblogs.com/wang-jing/p/4777388.html
Copyright © 2020-2023  润新知