7

例如,如果我$("p")在 chrome 控制台中输入,我会得到[<p>Text1</p>,<p>..</p>],这正是我想要的。现在我想将结果字符串存储到一个变量中并稍后重用它,但我还找不到方法($("p").toString()gets [Object Object])。

有没有办法console.log在代码中获取结果字符串?

4

3 回答 3

3

好吧,这里有一些东西:

function repr(obj) {
    if(obj == null || typeof obj === 'string' || typeof obj === 'number') return String(obj);
    if(obj.length) return '[' + Array.prototype.map.call(obj, repr).join(', ') + ']';
    if(obj instanceof HTMLElement) return '<' + obj.nodeName.toLowerCase() + '>';
    if(obj instanceof Text) return '"' + obj.nodeValue + '"';
    if(obj.toString) return obj.toString();

    return String(obj);
}

它不是交互式的或全面的。如果您需要,我可以添加它,但在某些时候,查看 WebKit 开发人员工具的源代码可能会更容易:)

于 2013-07-28T18:39:57.497 回答
1

你不能。console.log做一些字符串不能做的魔法。它不只是将对象呈现为字符串。它还使对象结构具有交互性和可点击性。它正在渲染多个交互式元素。开发面板正在引用一个对象并将其渲染到您的代码可以到达的地方之外。

但正如@minitech 所指出的,您可以使用JSON.stringify(myObject).

var myObject = { a: 1, b: 2 };
myObject.toString();      // [object Object]
JSON.stringify(myObject); // {"a":1,"b":2}

尽管这不适用于 DOM 元素,因为它们通常具有循环引用。因此,您必须编写自己的函数来抓取 jQuery 对象并将其转储为字符串。没有任何内置功能可以为您完成。

于 2013-07-28T04:47:17.050 回答
0

你可以试试util-inspect

这是inspect从模块中提取的 Node 实用程序util,具有两个基本优点:

  • 单一、集中的模块
  • 兼容所有浏览器和环境。

虽然它兼容浏览器,但它使用的是 CommonJS,所以需要先捆绑。但是有一个 fork,您可以通过UNPKG直接在浏览器中加载。

于 2020-03-30T11:05:53.147 回答