繁体   English   中英

功能是一个对象吗? 为什么console.log不显示可检查的对象?

[英]is function an object? Why console.log does not show inspectable Object?

var foo = function () {};
foo.a = "an attribute";  // set attribute to prove foo is an object
console.log(foo)  // log shows: function () {};

我认为函数foo是一个对象,但为什么Chrome中的console.log显示"function () {}"而不是可检查的对象? 无论如何,在记录函数时是否显示可检查对象?

当您调用console.log(foo) ,控制台会构建一个非规范化的显示(它不是EcmaScript的一部分)。 在大多数情况下(但不是基本对象),它调用参数的toString函数(但是更多的工作,比如在字符串中添加引号,设置颜色,提供对象浏览等)。

函数的toString函数只是打印代码。

如果您想查看所有属性,您可能会这样做

console.dir(foo);

或者( 至少在Chrome上

console.log("%O", foo);

对于具有专用toString函数的其他对象,您会看到相同的现象。

例如 :

var a = new Number(3);
a.b = 4;
console.log(a); // logs just 3
console.dir(a); // lets you see b

使用console.dir()查看a

>>>>console.log(foo);
function()
>>>>console.dir(foo);
a            "an attribute"
prototype    Object { }

破坏是对的。 function是toString打印代码的对象。

console.log(foo.a); 

会做的伎俩

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM