自定义字符串而不是"对象"在console.log中

时间:2017-07-24 15:30:21

标签: javascript ecmascript-6

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

在以下示例中,查看example对象在记录到控制台时如何标记Object,而windowWindow标记为__proto__["Symbol(Symbol.toStringTag)"]时登录到控制台。我猜测window属性可能是要走的路,因为Window' s设置为foo_out *out = malloc(sizeof(foo_out)); if (foo_2(out, cl) != RPC_SUCCESS) { printf("failed \n"); // exit(1); } printf("foo out: %s\n", out->name); 。这不起作用,但也许我只是错误地使用它。

enter image description here

1 个答案:

答案 0 :(得分:2)

那是因为你使用的是错误的符号 - 你在正确的轨道上。 Symbol.toStringTagObject#toString用来为您提供控制台输出的特殊着名符号,特别是您所使用的标记。你不能像你一样把它包装成一个字符串,否则你将真正设置"Symbol.toStringTag"属性,而不是实际的符号:

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