如何获取当前属性函数的名称-JavaScript

时间:2018-06-21 12:35:57

标签: javascript function object ecmascript-5

我有一个看起来像下面的对象。基本上,它包含调用方法的属性。我想做的是,而不是两次拥有DEVELOPER(一次是为属性名,一次是为参数值),我想获得被调用的当前属性以获取此信息。

我也不希望在初始调用中将“ DEVELOPER”作为参数传递,因为我想让intellisense将其提取。

return {
   DEVELOPER: function ()
            {
                return getEmailRecipients("DEVELOPER")
            }
}
 //it get's called like this.
 emailGroups.DEVELOPER();

基本上我想做

return {
   DEVELOPER: function ()
            {
                return getEmailRecipients({this.currentPropName}) //Which would equal DEVELOPER.
            }
}

如果有更好的方法可以做到这一点,那么我会不知所措。

谢谢!

1 个答案:

答案 0 :(得分:0)

据我所知,这是不可能的,或者至少它不是内置的。

您可以像这样使用name中定义的函数arguments.callee ...

arguments.callee.name

但是函数的name属性没有得到很好的支持。

您可以尝试这样的事情...

this.toSource().match(/\{(.*?):/)[1].trim ()

但这仅适用于对象中的一项,而仅适用于第一项。

您还可以尝试将返回的对象定义为变量,并在该对象上循环,为每个项目提供一个包含项目名称的新属性。

喜欢...

// Object to return to emailGroups
var data = {
    DEVELOPER: function ()
    {
        return getEmailRecipients (arguments.callee.givenName)
    }
}

// Give each object item a new property containing the name
for (var name in data) {
    if (data.hasOwnProperty (name) === true) {
        data[name].givenName = name;
    }
}

// Return data variable as emailGroups
return data;