KeyOf/keyMirror

433 阅读1分钟

Reac中用到很多的 KeyOf/keyMirror 方法。

KeyOf

    var keyOf = function (oneKeyObj) {
      var key;
      for (key in oneKeyObj) {
        if (!oneKeyObj.hasOwnProperty(key)) {
          continue;
        }
        return key;
      }
      return null;
    };

这个方法的作用很简单,就是将一个对象的key返回出去。

keyMirror

    var keyMirror = function (obj) {
      var ret = {};
      var key;
      !(obj instanceof Object && !Array.isArray(obj)) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'keyMirror(...): Argument must be an object.') : invariant(false) : undefined;
      for (key in obj) {
        if (!obj.hasOwnProperty(key)) {
          continue;
        }
        ret[key] = key;
      }
      return ret;
    };

这个函数的作用更简单,就是如同一面镜子 (mirror) 一样,讲一个对象形如 key-value 的形式改为 key-key形式,这就像是在key后放置了一面镜子 (Mirror)