Reputation: 2126
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
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
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
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