我想获得一个JavaScript实例或类方法的名称(在客户端/浏览器JS),而使用以下OOP风格AMD模块(用于RequireJS使用):如何从方法内部获取JavaScript类/实例方法的名称?
define([...], function(...) {
var FooBar = function() {
//Constructor code...
};
FooBar.foo = function() {
//This is a FooBar class method named "foo". How do I get its name from here?
//...
};
FooBar.prototype.bar = function() {
//This is a FooBar instance method named "bar". How do I get its name from here?
//...
};
});
我已经看到各种帖子解释如何在命名函数(例如,函数foobar(){...})的情况下做到这一点,但不是在指定匿名函数的情况下,例如foobar = function(){...}。
后者与此处相关,除非上述内容可以改为使用命名函数来代替。
我宁愿不回复到一些命名方案的约定,如foobar = function foobar_extra_name(){...},因为这涉及命名一个函数两次。此外,即使这是可能的,仍然不可能像FooBar.prototype.bar = function FooBar.prototype.bar(){...}这样做,因为它是点符号,所以它不会是很多帮助。
对此有何想法?任何帮助是极大的赞赏。
究竟什么是你的使用情况?在最简单的情况下,你不需要“获取”这个名字,因为你知道这个名字是“foo”。 – Bergi
匿名函数没有名字。如果将相同的功能分配给两个不同的属性,您认为会发生什么? – Bergi
@Bergi:用例是一种情况,我希望在函数中显示一条错误消息以进行调试,而无需在控制台中手动扩展堆栈跟踪。快速打印功能名称就足够了。我只是想知道是否有某种机制可以做到这一点(我不想在函数中重复该名称,因为我想避免重复挥发性信息,以防我会更改函数名称)。但是当谈到你的第二条评论时你是对的;我只是希望函数被调用的方式会提供一些额外的信息。 – Danny