Movatterモバイル変換


[0]ホーム

URL:


  1. Веб-технологии для разработчиков
  2. JavaScript
  3. Справочник по JavaScript
  4. Стандартные встроенные объекты
  5. Object
  6. Object.keys()

This page was translated from English by the community.Learn more and join the MDN Web Docs community.

View in EnglishAlways switch to English

Object.keys()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨июль 2015 г.⁩.

Сводка

МетодObject.keys() возвращает массив из собственных перечисляемых свойств переданного объекта, в том же порядке, в котором они бы обходились цикломfor...in (разница между циклом и методом в том, что цикл перечисляет свойства и из цепочки прототипов).

Синтаксис

Object.keys(obj)

Параметры

obj

Объект, чьи собственные перечисляемые свойства будут возвращены.

Описание

МетодObject.keys возвращает массив строковых элементов, соответствующих именам перечисляемых свойств, найденных непосредственно в самом объекте. Порядок свойств такой же, как и при ручном перечислении свойств в объекте через цикл.

Примеры

js
var arr = ["a", "b", "c"];console.log(Object.keys(arr)); // консоль: ['0', '1', '2']// Массивоподобный объектvar obj = { 0: "a", 1: "b", 2: "c" };console.log(Object.keys(obj)); // консоль: ['0', '1', '2']// Массивоподобный объект со случайным порядком ключейvar an_obj = { 100: "a", 2: "b", 7: "c" };console.log(Object.keys(an_obj)); // консоль: ['2', '7', '100']// Свойство getFoo является не перечисляемым свойствомvar my_obj = Object.create(  {},  {    getFoo: {      value: function () {        return this.foo;      },    },  },);my_obj.foo = 1;console.log(Object.keys(my_obj)); // консоль: ['foo']

Если вы хотите увидеть все свойства, а не только перечисляемые, смотрите методObject.getOwnPropertyNames().

Примечания

В ES5, если аргумент метода не является объектом (является примитивным значением), будет выброшено исключениеTypeError. В ES2015 такой аргумент будет приведён к объекту.

js
> Object.keys('foo')TypeError: 'foo' is not an object // код ES5> Object.keys('foo')['0', '1', '2']                   // код ES2015

Полифил

Для добавления поддержки совместимого методаObject.keys в старых окружениях, которые его ещё не реализуют, скопируйте следующий кусок кода:

js
// From https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Object/keysif (!Object.keys) {  Object.keys = (function () {    "use strict";    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 = [],        prop,        i;      for (prop in obj) {        if (hasOwnProperty.call(obj, prop)) {          result.push(prop);        }      }      if (hasDontEnumBug) {        for (i = 0; i < dontEnumsLength; i++) {          if (hasOwnProperty.call(obj, dontEnums[i])) {            result.push(dontEnums[i]);          }        }      }      return result;    };  })();}

Пожалуйста, обратите внимание, что вышеприведённый код в IE7 (и, может быть, в IE8) включает и не перечисляемые ключи, если объект передаётся из другого окна.

Более простой полифил может быть найден в статьеJavascript - Object.keys Browser Compatibility (англ.).

Спецификации

Specification
ECMAScript® 2026 Language Specification
# sec-object.keys

Совместимость с браузерами

Смотрите также

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp