我有一個包含對象文本字符串:如何將對象轉換爲其文字字符串?
var literalStr = "{
a: 1,
b: function(){return 'b'}
}";
我可以從字符串創建一個對象:
var obj = eval("(" + literalStr + ")");
有一個簡單的辦法讓文字串從對象回來?
我在尋找類似JSON.stringify()
但因此它創建原始文字具有的功能和屬性名稱不帶引號。
我有一個包含對象文本字符串:如何將對象轉換爲其文字字符串?
var literalStr = "{
a: 1,
b: function(){return 'b'}
}";
我可以從字符串創建一個對象:
var obj = eval("(" + literalStr + ")");
有一個簡單的辦法讓文字串從對象回來?
我在尋找類似JSON.stringify()
但因此它創建原始文字具有的功能和屬性名稱不帶引號。
您正在尋找非標準toSource
method(s)。請注意,跨瀏覽器版本是不可能的,因爲某些js引擎不提供從函數獲取源字符串的可能性。
「不可能」..強詞! –
@Buchow_PHP:但我的意思是。檢查[perfectionkills.com/those-tricky-functions](http://web.archive.org/web/20130531031212/http://perfectionkills.com/those-tricky-functions/) – Bergi
function stringify(source) {
if (typeof (source) == "object") {
var str = "{";
for (var key in source) {
var value = source[key];
str += key + ":" + stringify(value) + ",";
}
return str.substring(0,str.length-1) + "}";
}
return source.toString();
}
然後
console.log(stringify(obj));
// writes "{a:1,b:function(){return 'b'}}"
我覺得這是更復雜比起那個來說。對於初學者來說,它不能正確處理字符串。 – georg
你可以很容易地添加'if(typeof(source)==「string」)...' –
這就是['toSource'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/ Global_Objects/Object/toSource) - 但它是Firefox特有的。 – georg
@akmidd你已經在literalStr中擁有它了。你爲什麼不能使用它? – user10
因爲我想從任何對象中獲取文字,而不僅僅是從已知文字創建的文字。 –