【发布时间】:2015-04-04 17:26:47
【问题描述】:
鉴于此方法:
var obj = {}, obj.foo = function () {};
是否可以在创建方法后为其指定名称,使其看起来类似于:
var obj = {}, obj.bar = function bar() {};
foo 方法是匿名的并分配给一个属性。 bar 方法被命名并分配给一个属性。
你能把匿名的 foo 方法动态地变成一个命名的 foo 方法吗?函数对象上是否有可以设置的属性或类似于:
obj.foo.<name> = Object.keys(obj)[0];
请不要使用 jquery。此外,这是在节点服务器应用程序中,因此跨浏览器问题无关紧要。
编辑: 对我有用的答案是 Daniel 的链接:How to dynamically set a function/object name in Javascript as it is displayed in Chrome。这种方法还处理函数的参数。
【问题讨论】:
-
为什么需要这样的功能?
-
除非你愿意获取函数的字符串值(即它的 JavaScript 源代码),修改它,然后从中创建一个新函数,否则没有办法做到这一点。你想达到什么目的?无论如何,在
function这样的表达式中给出的名称在函数外部是不可见的。 -
@ChrisGciso 不是真的;可能在各个地方都有对原始函数的引用。
标签: javascript node.js function anonymous-function v8