如何将 JavaScript 对象转换为字符串?
例子:
var o = {a:1, b:2}
console.log(o)
console.log('Item: ' + o)
输出:
Object { a=1, b=2} // 非常好的可读输出 :)
Item: [object Object] // 不知道里面是什么 :(
如何将 JavaScript 对象转换为字符串?
例子:
var o = {a:1, b:2}
console.log(o)
console.log('Item: ' + o)
输出:
Object { a=1, b=2} // 非常好的可读输出 :)
Item: [object Object] // 不知道里面是什么 :(
我建议使用JSON.stringify
,它将对象中的变量集转换为 JSON 字符串。大多数现代浏览器本机支持此方法,但对于那些不支持的浏览器,您可以包含一个JS 版本:
var obj = {
name: 'myObj'
};
JSON.stringify(obj);
当然,要将对象转换为字符串,您必须使用自己的方法,例如:
function objToString (obj) {
var str = '';
for (var p in obj) {
if (Object.prototype.hasOwnProperty.call(obj, p)) {
str += p + '::' + obj[p] + '\n';
}
}
return str;
}
其实,上面只是展示了一般的做法;您可能希望使用类似http://phpjs.org/functions/var_export:578或http://phpjs.org/functions/var_dump:604 的东西
或者,如果您不使用方法(作为对象属性的函数),您可以使用新标准(但未在旧浏览器中实现,但您也可以找到一个实用程序来帮助它们),JSON .stringify()。但同样,如果对象使用不可序列化为 JSON 的函数或其他属性,那将不起作用。
更新:
更现代的解决方案是:
function objToString (obj) {
let str = '';
for (const [p, val] of Object.entries(obj)) {
str += `${p}::${val}\n`;
}
return str;
}
或者:
function objToString (obj) {
return Object.entries(obj).reduce((str, [p, val]) => {
return `${str}${p}::${val}\n`;
}, '');
}
保持简单console
,您可以只使用逗号而不是+
。该+
会尝试将对象转换为字符串,而逗号将在控制台中单独显示它。
例子:
var o = {a:1, b:2};
console.log(o);
console.log('Item: ' + o);
console.log('Item: ', o); // :)
输出:
Object { a=1, b=2} // useful
Item: [object Object] // not useful
Item: Object {a: 1, b: 2} // Best of both worlds! :)
参考:https : //developer.mozilla.org/en-US/docs/Web/API/Console.log
编辑 不要使用此答案,因为它仅适用于某些版本的 Firefox。没有其他浏览器支持它。使用Gary Chambers解决方案。
toSource()是您正在寻找的函数,它将把它写成 JSON。
var object = {};
object.first = "test";
object.second = "test2";
alert(object.toSource());