我有一个像这样的对象,它是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

10-08 00:22