access outer "this" in Javascript sort method

javascript

Solution

The different `this` is because the the anonymous function (its own closure) called by `arr.sort` calls the function with `this` being set to a different item than your main object. In an Array.sort, I am not actually sure what `this` is set to, but it is probably the Array you are sorting. A normal work around in this situation is to use another variable:

function some_object(...) {
   var so = this; // so = current `this`
   this.data = {...};

   this.do_something = function(...) {
      var arr = [...];

      arr.sort(function (a, b) {
         return so.data[a] - so.data[b];
      });  
   }
}

Problem

I have this code: ``` function some_object(...) { this.data = {...}; this.do_something = function(...) { var arr = [...]; arr.sort(function (a, b) { return this.data[a] - this.data[b]; }); } } ``` However it's not working I think because `this` cannot be accessed in `sort` - another `this` is seen there for some reason, not the `this` of enclosing outer object. What to do? thanks

Original source