【发布时间】:2015-08-13 17:46:22
【问题描述】:
这是一个边缘案例,可能是不好的做法,但它让我对一些 js 内部结构感到好奇。谁能解释为什么 chrome 开发工具告诉我我在这里创建了一个名为 a.a.b.b 的函数?
请注意,除非您分配给属性,否则不会发生这种情况。否则 a 和 b 似乎都引用了一个名为 'b' 的函数对象:
顺便说一句,我最初在尝试回答my own question about dat.gui.js时遇到了这个here。
【问题讨论】:
-
您被浏览器控制台的奇怪工作方式所误导。 (该语言并没有做你认为它正在做的事情。匿名函数并没有真正的名字。)
-
对于@Pointy 的观点,如果你尝试调用 a.a.b.b() 你会得到一个 TypeError。
-
它与 JS 内部无关。这只是 DevTools 的增强,我猜是为了方便调试。真正的赋值仍然是匿名函数 -
a.a.name给你空字符串。
标签: javascript function object