我有一个像这样的对象,它是key => function对的集合。
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”,依此类推。调用该函数,它将返回哈希对象。
有什么方法可以从函数内部获取对象的键(我只需要与要调用的函数对应的键)
最佳答案
这是一种实现方法:
var hashes = {
'a': 'Fanta',
'b': 'Pepsi',
'c': 'Lemonade'
};
var logger = function( key, value ) {
console.log( key );
return value;
};
for ( var key in hashes ) {
if ( hashes.hasOwnProperty( key ) ) {
var value = hashes[ key ];
hashes[ key ] = logger.bind( null, key, value );
}
}
hashes.a(); // "a"
hashes.b(); // "b"
hashes.c(); // "c"
Demo on JSBin