You swapped the order of method arguments though
you are doing x add Sy which isn't the same as Sy add x
Number.prototype.add = function (y) {
var x = Number(this)
return x===0 ? y : (y+1).add(x-1)
}
console.log(Number(3).add(2)) // infinite