this in event handlers for another object

后端 未结 2 799
迷失自我
迷失自我 2020-12-21 17:01

Class A (mine) implements event handlers for class B (3rd party). Within these event handlers, I would like to access class A\'s properties.

Using this in c

2条回答
  •  悲哀的现实
    2020-12-21 17:27

    Another solution is to bind your event handlers to your object!

    You first need the add the bind method to any function object. Use this code:

    Function.prototype.bind = function(scope) {
      var func = this;
    
      return function() {
        return func.apply(scope, arguments);
      }
    }
    

    Now you can register your class B event handlers to your class A methods this way:

    var a = new A();
    var b = new B();
    
    b.registerEvent(a.eventHandlerMethod.bind(a));
    

    This way any references to this within the code of A.eventHandlerMethod will point to object a.

    If you need a deeper understanding of this stuff you can read this great article: http://www.alistapart.com/articles/getoutbindingsituations/

    Another article: http://alternateidea.com/blog/articles/2007/7/18/javascript-scope-and-binding

提交回复
热议问题