Поскольку this
будет объектом Number, а не исходным значением примитива, а сравнение двух одинаково созданных объектов всегда будет возвращать false:
{"test":"Hello"} === {"test":"Hello"} // false
// Check the typeof your vars
var x= 1;
Number.prototype.test = function () { return this };
x.test() === x.test() // false
alert("x is a "+typeof(x)+", x.test() is an "+typeof(x.test()));
Если вы ищете исправление, наберите this
на число
var x= 1;
Number.prototype.test = function () { return +this };
x.test() === x.test() // TRUE!
alert("x is a "+typeof(x)+", x.test() is also a "+typeof(x.test()));