我有一個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