Demonick
Demonick

Reputation: 2126

Javascript function parameter to String

I have a javascript function which takes a parameter, like:

function getSomething(cat,handler) {

      varURI = 'text'+cat;
      document.write('<p>'+varURI+'</p>');

    }

What I see in the output is:

text[object Object]

How do I get the real textual value of the Object?

Upvotes: 4

Views: 17813

Answers (3)

Christian C. Salvad&#243;
Christian C. Salvad&#243;

Reputation: 827256

You need to override the toString method of the object -and give your object a "textual value"-.

You are getting "[object Object]" because the inherited Object.prototype.toString method is being executed, for example:

var cat = {
  name: 'Kitten',
  toString: function () {
    return this.name + ' meow';
  }
};

This own toString method will be executed when you make any implicit to string conversion (like when you concatenate a string to it), e.g.:

console.log(cat+' text'); // "Kitten meow text"

Note: If you mean by "textual value" a "string representation" of the object, (e.g. listing property/value pairs), your function will need to enumerate all the properties (using the for-in statement), but usually most of the time, that's done for debugging purposes, if that's the case, I would recommend you to get a debugger (like Firebug), and use the console.dir method.

Upvotes: 8

The Mask
The Mask

Reputation: 17427

You can make this:

function ObjectToString(input,KeysOnly) {
    var ret = [];
    if(KeysOnly) 
       for(var k in input) 
        ret[k] = input[k]; 
    else 
        for(var k in input) 
        ret.push(k);
    return ret.toString();
}

function getSomething(cat,handler) {

  varURI = 'text'+ObjectToString(cat);
  document.write('<p>'+varURI+'</p>');
}

Upvotes: 0

Sascha Galley
Sascha Galley

Reputation: 16091

I don't know what cat is, but usually you use the toString() method.

function getSomething(cat,handler) {

  varURI = 'text'+cat.toString();
  document.write('<p>'+varURI+'</p>');

}

Upvotes: 2

Related Questions