函数的哪个属性确实意味着什么

时间:2015-09-27 09:45:32

标签: javascript

对于下面的代码,我为对象/user/profile提供了isShiny,它被列为属性的一部分,它本质上是一个键值对, 密钥是obj, value是匿名函数。

但是当我为函数isShiny提供isShiny时,幕后真的发生了什么?当我打印出一个函数时,没有提示func的位置。

isShiny

这是浏览器 var obj ={} //this is an object obj.isShiny = function () { console.log(this); return "you bet1"; }; console.log(obj); var func = function () {console.log(this)}; //this is a function func.isShiny = function () { console.log(this); return "you bet1"; }; console.log(func); 的输出。

enter image description here

2 个答案:

答案 0 :(得分:3)

您在记录此功能时未获得任何isShiny跟踪的原因完全是由于浏览器对console.log的实施,而与#39}无关;在JavaScript中幕后发生的事情。 console.log看到该属性是一个函数,因此不会像正常情况那样将其注销。宾语。在这种情况下,console.dir可能会更有用。有关console.logconsole.dir的区别的详细信息,请查看this question and its answers

正如您已经正确地意识到的那样,在JavaScript中,函数本质上只不过是一个可调用对象 - 您可以像任何非函数对象一样分配和访问属性。

答案 1 :(得分:2)

使用console.dir代替console.log,并使用方法和属性记录函数对象。

相关问题:What's the difference between console.dir and console.log?