我有一个javascript函数,它接受一个参数,如:
function getSomething(cat,handler) {
varURI = 'text'+cat;
document.write('<p>'+varURI+'</p>');
}
我在输出中看到的是:
text[object Object]
如何获取对象的真实文本值?
答案 0 :(得分:7)
您需要覆盖对象的toString
方法 - 并为对象提供“文本值” - 。
您收到"[object Object]"
因为正在执行继承的Object.prototype.toString
方法,例如:
var cat = {
name: 'Kitten',
toString: function () {
return this.name + ' meow';
}
};
当您进行任何隐式的字符串转换时(例如,当您将字符串连接到它时),将执行此自己的toString
方法,例如:
console.log(cat+' text'); // "Kitten meow text"
注意:如果你的意思是“文本值”是对象的“字符串表示”(例如列出属性/值对),你的函数将需要枚举所有属性(使用for-in
语句) ,但通常大部分时间,这是为调试目的,如果是这种情况,我建议你得到一个调试器(如Firebug),并使用console.dir
方法。
答案 1 :(得分:2)
我不知道cat
是什么,但通常使用toString()
方法。
function getSomething(cat,handler) {
varURI = 'text'+cat.toString();
document.write('<p>'+varURI+'</p>');
}
答案 2 :(得分:0)
你可以这样做:
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>');
}