【发布时间】:2015-09-05 03:22:13
【问题描述】:
我有一个像这样的对象,它是键=>函数对的集合。
var hashes = {
"a": function () {
console.log($(this));
return 'Fanta';
},
'b': function () {
console.log($(this));
return 'Pepsi';
},
'c': function () {
console.log($(this));
return 'Lemonade';
}
};
hashes["a"]();
hashes["b"]();
我想从函数中获取键的名称,即我希望 console.log($(this)) 返回“a”作为第一个函数,“b”作为第二个函数等等。但是由于 hashes 正在调用该函数,因此它返回 hashes 对象。
有没有办法从函数中获取对象的键(我只需要与被调用函数对应的键)
【问题讨论】:
-
不能把key传给函数?
-
@limelights: 你的意思是像: hashes["a"]("a");我可以做到,但我想知道是否有办法在不传递价值的情况下做到这一点。
-
我没有办法知道。该函数实际上并不属于
hashes对象或单个键,而是该对象属性包含对该函数的引用。您可以对不属于该对象的函数有其他引用,例如,var x = hashes.a; x();。 (返回 'Fanta')如果您给函数名称以匹配键,您可以尝试arguments.callee.name,但这已被弃用,并且在严格模式下不起作用。 -
@nnnnnn:感谢您的回复。我明白了。但是,我会等着看是否有任何解决方案。我用它作为 switch case 的替代方法
标签: javascript object