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 () {}"
而不是可检查的对象?无论如何,在记录函数时是否显示可检查对象?
答案 0 :(得分:7)
当您调用console.log(foo)
时,控制台会构建一个非标准化显示(它不是EcmaScript的一部分)。在大多数情况下(但不是基本对象),它调用参数的toString
函数(但是更多的工作,比如在字符串中添加引号,设置颜色,提供对象浏览等)。
函数的toString
函数只是打印代码。
如果要查看所有属性,可以执行
console.dir(foo);
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
答案 1 :(得分:1)
使用console.dir()
查看a
>>>>console.log(foo);
function()
>>>>console.dir(foo);
a "an attribute"
prototype Object { }
答案 2 :(得分:0)
破坏是正确的。 function是一个对象,其toString打印代码。
console.log(foo.a);
会做的伎俩