我有一个看起来像下面的对象。基本上,它包含调用方法的属性。我想做的是,而不是两次拥有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.
}
}
如果有更好的方法可以做到这一点,那么我会不知所措。
谢谢!
答案 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;