Tuve un momento, así que, aunque ya has aceptado una respuesta, pensé que contribuiría lo siguiente:
Number.prototype.between = function(a, b) {
var min = Math.min.apply(Math, [a, b]),
max = Math.max.apply(Math, [a, b]);
return this > min && this < max;
};
var windowSize = 550;
console.log(windowSize.between(500, 600));
Demostración de JS Fiddle .
O, si prefiere tener la opción de verificar que un número esté en el rango definido, incluidos los puntos finales :
Number.prototype.between = function(a, b, inclusive) {
var min = Math.min.apply(Math, [a, b]),
max = Math.max.apply(Math, [a, b]);
return inclusive ? this >= min && this <= max : this > min && this < max;
};
var windowSize = 500;
console.log(windowSize.between(500, 603, true));
Demostración de JS Fiddle .
Editado para agregar una enmienda menor a lo anterior, dado que, como se señala en los comentarios,
... Function.prototype.apply()es lento! Además de llamarlo cuando tienes una cantidad fija de argumentos no tiene sentido ...
valió la pena eliminar el uso de Function.prototype.apply(), que produce las versiones modificadas de los métodos anteriores, en primer lugar sin la opción 'inclusiva':
Number.prototype.between = function(a, b) {
var min = Math.min(a, b),
max = Math.max(a, b);
return this > min && this < max;
};
var windowSize = 550;
console.log(windowSize.between(500, 600));
Demostración de JS Fiddle .
Y con la opción 'inclusiva':
Number.prototype.between = function(a, b, inclusive) {
var min = Math.min(a, b),
max = Math.max(a, b);
return inclusive ? this >= min && this <= max : this > min && this < max;
}
var windowSize = 500;
console.log(windowSize.between(500, 603, true));
Demostración de JS Fiddle .
Referencias