views:

43

answers:

1

Hi, I'm trying to add a toBool() "method" inside the Object object using prototype... something like this:

Object.prototype.toBool = function ()
{
 switch(this.toLowerCase())
 {
  case "true": case "yes": case "1": return true;
  case "false": case "no": case "0": case null: return false;
  default: return Boolean(string);
 }
}

var intAmount = 1;
if(intAmount.toBool())

But I'm having an issue trying to access the value of the object from inside the same object method this.toLowerCase()

How should it be done?

+1  A: 

Your code doesn't work because toLowerCase() is a method of String, but not of Number. So, when you try to call toLowerCase() on the number 1, it doesn't work. A solution would be just to convert the number to string first:

Object.prototype.toBool = function ()
{
 switch(String(this).toLowerCase())
 {
  case "true": case "yes": case "1": return true;
  case "false": case "no": case "0": case null: return false;
  default: return Boolean(string);
 }
}
toby
In this case I will need to verify if the object created is a string, and then apply the toLowerCase() to obj. value...?
Juanra
All objects have a `toString` method, I think you should be using that here.
Josh Stodola
with `String(this)` works...with `this.toString()` should work too...
Juanra