不知道“下图中圈出的东西”叫什么,使我的问题很难找到答案。
下图中我圈出的东西叫什么名字?实际上是什么 (myObject.myFunction) 是无关紧要的。我希望能够将其写到控制台。我尝试过以下方法:
console.log(sp); // -- outputs the text that is the actual function (e.g. 'function(config){ ... }'
console.log(sp.constructor); // -- outputs 'function Function(){ [native code] }'
console.log(sp.constructor.name); // -- outputs 'Function'
Thanks,
Dave.
编辑 - 为了尝试澄清问题,我删除了旧图像(其中对象与 ExtJS 有关),并替换为上面的图像。
我不想记录 te 函数是什么,或者它包含什么“属性”(如果我们像类一样使用它) - 我只想要我用红色圈出的文本。
myObject.myFunction 只是 Chrome 分配给该函数的名称。它实际上并不是该函数的名称;而是该函数的名称。根据定义,匿名函数没有名称:
console.log(fooFunc.name) //"fooFunc"
console.log(foo.name); //""
console.log(myObject.myFunction.name) //""
但是,即使函数是匿名的,函数具有人类可读的名称也是有帮助的,因此,当创建匿名函数时,Google Chrome 会跟踪该函数分配给的属性并将其存储为该函数的名称。
您还会看到该名称显示在堆栈跟踪中。如果你要抛出一个错误myObject.myFunction
,然后查看堆栈跟踪,它看起来像这样:
Error
at myObject.myFunction (<anonymous>:2:41)
at <anonymous>:2:6
at Object.InjectedScript._evaluateOn (<anonymous>:704:39)
at Object.InjectedScript._evaluateAndWrap (<anonymous>:643:52)
at Object.InjectedScript.evaluate (<anonymous>:557:21)
关键是,这确实不是 javascript 本身的特性,而是 Chrome 实现 javascript 的方式的特性。 (虽然如果其他浏览器不做类似的事情我会感到惊讶)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)