我有一个JavaScript函数,它接受一个参数,如:JavaScript函数参数字符串
function getSomething(cat,handler) {
varURI = 'text'+cat;
document.write('<p>'+varURI+'</p>');
}
我在输出中看到的是:
text[object Object]
我如何获得真正的文本值对象的?
我有一个JavaScript函数,它接受一个参数,如:JavaScript函数参数字符串
function getSomething(cat,handler) {
varURI = 'text'+cat;
document.write('<p>'+varURI+'</p>');
}
我在输出中看到的是:
text[object Object]
我如何获得真正的文本值对象的?
你需要重写对象的toString
方法 - 和给你的对象“文本值” - 。
你得到"[object Object]"
,因为正在执行的继承Object.prototype.toString
方法,例如:
var cat = {
name: 'Kitten',
toString: function() {
return this.name + ' meow';
}
};
当你做出任何隐含的字符串转换(这本身toString
方法将被执行时,您将字符串像它),例如:
console.log(cat+' text'); // "Kitten meow text"
注:如果通过“文本值”对象的“字符串表示”意思是说,(如上市属性/值对),你的功能将需要enumer吃了所有的属性(使用for-in
语句),但通常大部分时间,这是为了调试目的,如果是这样的话,我会建议你得到一个调试器(如Firebug),并使用console.dir
方法。
我不知道cat
是什么,但通常你使用的是toString()
的方法。
function getSomething(cat,handler) {
varURI = 'text'+cat.toString();
document.write('<p>'+varURI+'</p>');
}
你可以这样:
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>');
}
事实上,他得到'“的翻译:”'因为对象不具有自己的'toString'方法(它的执行继承一个从'对象。调用'cat.toString();'而不覆盖它并没有什么区别,例如:'console.log({} +'');''和'console.log({}。toString ());'产生''[object Object]''。 – CMS