javascript - 自定义字符串而不是 console.log 中的 "Object"

标签 javascript ecmascript-6

为了方便调试,我认为最好打印一些自定义字符串,而不是在将对象记录到控制台时显示的默认Object

在下面的示例中,您将看到名为 example 的对象在记录到控制台时如何由 Object 标记,而 window 是记录到控制台时由 Window 标记。我猜想 __proto__["Symbol(Symbol.toStringTag)"] 属性可能是正确的选择,因为 window 设置为 Window.这不起作用,但也许我只是用错了它。

enter image description here

最佳答案

那是因为您使用了错误的符号 - 您走在正确的轨道上。 Symbol.toStringTag 是一个特殊的众所周知的 Symbol,Object#toString 使用它来为您提供控制台输出,特别是您要查找的标签。您不能像以前那样将其包装在字符串中,否则您实际上将设置 "Symbol.toStringTag" 属性,而不是实际的 Symbol:

const example = {
  key: "value"
};

example.__proto__["Symbol.toStringTag"] = "Example";
console.log(example); //You set the literal "Symbol.toStringTag" property -- wrong

相反,不要将其括在引号中并实际设置符号:

const example = {
  key: "value"
};

example.__proto__[Symbol.toStringTag] = "Example";
console.log(example);

这会产生(在 Chrome 上):

enter image description here

关于javascript - 自定义字符串而不是 console.log 中的 "Object",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45284564/

相关文章:

JavaScript ES6 : Recursive function call from foreach loop fails

javascript - Jquery datepicker 仅在页面刷新后才起作用

javascript - Flot JS 折线图 按不同属性排序

javascript - 为什么我的异步函数返回 Uncaught TypeError : (intermediate value) is not iterable

javascript - Redux 状态更改后 React 容器不会重新渲染

javascript - 尝试这个例子后,对 Javascript 中的 Maps 和 Set 的基础知识感到困惑

javascript - 观察表格提交

javascript - 如何在函数javascript中连接两个字符串变量?

javascript - mootools 排序列表

javascript - 缓存对 Firebase 函数发出的 POST 请求的响应