gpt4 book ai didi

javascript - 如何将 JavaScript 对象隐式记录为字符串?

转载 作者:行者123 更新时间:2023-11-30 17:54:23 24 4
gpt4 key购买 nike

考虑:

var o = { a: 1, b: 2, toString: function() { return "foo"; } };

在 Chrome 开发工具中:

Debug Screenshot

我可以对对象做些什么,使 o 在调试控制台中显示为 "foo" 而不是完整的对象吗?

最佳答案

这是我的尝试:

(function() {
var cl = console.log;
console.log = function() {
cl.apply(console, [].slice.call(arguments).map(function(el) {
return {}.toString.call(el) === '[object Object]' && typeof el.toString === 'function' && el.toString !== Object.prototype.toString ? el.toString() : el;
}));
};
}());

^ 只需在任何 console.log 调用之前抛出此脚本即可。


Test case:

console.log('str', 42, /rege?x/, { a: 1 }, [1, 2], {
toString: function() { return "foo"; }
}, new function() {
this.toString = function() {
return 'bar';
};
}
);

console.log output


这只是将具有不同于 Object.prototype.toStringtoString 方法的普通/构造对象映射到它们的 .toString() 值.我选择这种方式而不是 hasOwnProperty,因为构造函数的原型(prototype)中也可能有一个 toString 方法。

如您所见,所有对象甚至基元都从 native 构造函数继承 toString 方法,因此您可能需要针对特定​​用例进行调整。例如,上面的代码片段没有使用自定义 toString 属性对函数对象进行字符串化。

关于javascript - 如何将 JavaScript 对象隐式记录为字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18368725/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com