Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么console.log(obj)显示obj的结构而不是toString()的返回值_Javascript - Fatal编程技术网

Javascript 为什么console.log(obj)显示obj的结构而不是toString()的返回值

Javascript 为什么console.log(obj)显示obj的结构而不是toString()的返回值,javascript,Javascript,我有一个具有以下结构的对象 var obj = { toString: function(){ return "20" }, valueOf: function(){ return 10; } }; alert(obj) //20 console.log(obj) //Object {toString: function, valueOf: function} 与警报(obj)不同,为什么console.log(obj)显示对象结构而不是toString()的返回值 在这两

我有一个具有以下结构的对象

var obj = {
    toString: function(){ return "20" },
    valueOf: function(){  return 10; }
};

alert(obj) //20
console.log(obj) //Object {toString: function, valueOf: function}
与警报(obj)不同,为什么console.log(obj)显示对象结构而不是toString()的返回值


在这两种情况下,都需要字符串文本。

console.log用于调试,而alert用于显示文本,因此,如果存在alert seek to字符串函数,则显示其结果,而不是显示[Object Object]。

用方法的话来说

alert()
使用对象的
toString()
方法将传递给它的对象转换为字符串[而]
console.log()
不仅用于显示简单字符串,还允许您与传递给它的对象交互

另外,
console.log()
用于调试。用他的话来说

例如,您可以在发生某些事情时将某些事情记录到控制台


您可以使用
console.log
查看完整的对象结构。

这只是为了便于调试
要在控制台中查看obj.toString()吗?使用:

Console.count(obj); //also will show how many times obj has been invoked
有用链接:


  • 若您想在控制台中获取文本,那个么只需添加像下面这样的空字符串

    console.log(obj + "");
    

    我同意,但为什么console.log()不调用toString(),因为拥有完整的对象结构.console.log(新字符串(“hello”))对调试更有用//字符串{0:h',1:e',2:l',3:l',4:o',长度:5}console.log(字符串(“hello”)//他可能的副本