Javascript函数参数为String

时间:2011-07-27 15:06:30

标签: javascript string object

我有一个javascript函数,它接受一个参数,如:

function getSomething(cat,handler) {

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

    }

我在输出中看到的是:

text[object Object]

如何获取对象的真实文本值?

3 个答案:

答案 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>');
}