MDN may have intermittent access issues April 18 13:00 - April 19 01:00 UTC. See whistlepig.mozilla.org for all notifications.

mozilla
Your Search Results

    Object.keys()

    概要

    与えられたオブジェクト自身に存在する列挙可能なプロパティの配列を、for-in ループで提供されるものと同じ順番で返します (for-in ループとの違いは、for-in ループではプロトタイプチェインのプロパティも列挙することです)。

    構文

    Object.keys(obj)

    引数

    obj
    自身の列挙可能なプロパティが返されるオブジェクトです。

    説明

    Object.keys は、object で直接発見された列挙可能なプロパティに対応する文字列を要素とする配列を返します。プロパティの順序は、オブジェクトのプロパティをループにより手動で取得した場合と同じです。

    var arr = ["a", "b", "c"];
    alert(Object.keys(arr)); // "0,1,2" とアラート表示するでしょう
    
    // array like object
    var obj = { 0 : "a", 1 : "b", 2 : "c"};
    alert(Object.keys(obj)); // "0,1,2" とアラート表示するでしょう
    
    // getFoo は列挙可能ではないプロパティです
    var my_obj = Object.create({}, { getFoo : { value : function () { return this.foo } } });
    my_obj.foo = 1;
    
    alert(Object.keys(my_obj)); // foo のみがアラート表示されるでしょう
    

    列挙可能ではないものを含むすべてのプロパティを取得したい場合は、Object.getOwnPropertyNames をご覧ください。

    互換性

    Object.keys をネイティブにサポートしていない環境向けに互換性を確保するため、以下のコード部品をコピーしましょう:

    if (!Object.keys) {
      Object.keys = (function () {
        var hasOwnProperty = Object.prototype.hasOwnProperty,
            hasDontEnumBug = !({toString: null}).propertyIsEnumerable('toString'),
            dontEnums = [
              'toString',
              'toLocaleString',
              'valueOf',
              'hasOwnProperty',
              'isPrototypeOf',
              'propertyIsEnumerable',
              'constructor'
            ],
            dontEnumsLength = dontEnums.length
    
        return function (obj) {
          if (typeof obj !== 'object' && typeof obj !== 'function' || obj === null) throw new TypeError('Object.keys called on non-object')
    
          var result = []
    
          for (var prop in obj) {
            if (hasOwnProperty.call(obj, prop)) result.push(prop)
          }
    
          if (hasDontEnumBug) {
            for (var i=0; i < dontEnumsLength; i++) {
              if (hasOwnProperty.call(obj, dontEnums[i])) result.push(dontEnums[i])
            }
          }
          return result
        }
      })()
    };
    

    より簡素なブラウザ間の互換性については Javascript - Object.keys Browser Compatibility をご覧ください。

    ブラウザのサポート

    Kangax's compat table に基づきます。

    機能 Firefox (Gecko) Chrome Internet Explorer Opera Safari
    基本サポート 4 (2.0) 5 9 12 5
    機能 Firefox Mobile (Gecko) Android IE Mobile Opera Mobile Safari Mobile
    基本サポート ? ? ? ? ?

    参考情報

    ドキュメントのタグと貢献者

    Contributors to this page: teoli, ethertank, yyss
    最終更新者: teoli,