【JavaScript】オブジェクト要素の変数名を取得する

コード

getVariableName.js/**
 * オブジェクト内要素の変数名を取得
 * 関数等の変数名を取得を想定している。
 * 数値など同一の値が複数オブジェクト内ある場合、意図した動作とならない。
 * @param {Object} obj - オブジェクト
 * @param {*} val - 要素
 * @return {(string|null)} 変数名
 */
function getVariableName(obj, val) {
  var ret = null;
  for (var key in obj) {
    if (obj[key] === val) {
      ret = key;
      break;
    }
  }
  return ret;
}

使用例

var func = function f1() {};
var obj = {f0: func, abc: 'ABC', f: true, t: true};
console.log(getVariableName(obj, func));    // f0
console.log(getVariableName(obj, 'ABC'));   // abc
console.log(getVariableName(obj, true));    // f ← 意図した動作とならないパターン