Odd .sort function behavior
-
I am writing a .sort function that sorts an array of objects by one of their properties. See the snippet below.
PriorityQueue.prototype.sort = function () {
var criterium = this.criteria; // For some reason using this.criteria in the next line doesn't work.
this.queue.sort(function(a,b) {
return b[criterium] - a[criterium]
});
}This works, but I'm curious why I have to define the variable criterium. If I were to use this.criteria within the sort function (i.e. "return b[this.criteria] - a[this.criteria]) then they return 'undefined'. For example, see the below code
PriorityQueue.prototype.sort = function () {
var criterium = this.criteria;
this.queue.sort(function(a,b) {
return console.log(a[criterium] + '___' + a[this.criteria]) // 10___undefined
});
}Here, a[criterium] correctly returns its associated number (10) whereas a[this.criteria] returns undefined. This happens despite that criterium = this.criteria.
Does anyone know why I can't use this.criteria within the sort function?
-
Check this article http://stackoverflow.com/questions/8670877/this-value-in-javascript-anonymous-function