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