Как найти ключи объекта?
Для производственного кода, требующего javascript-library большой совместимости с клиентскими javascript браузерами, я по-прежнему object рекомендую Ivan Nevostruev's answer с прокладкой, чтобы .js обеспечить Object.keys
в старых браузерах. Однако javascript-dom можно получить требуемую ecmascript функциональность с помощью key новой функции ECMA defineProperty
.
Начиная с ECMAScript 5 — Object.defineProperty
Начиная key с ECMA5, вы можете использовать keys Object.defineProperty()
для определения неперечислимых javascript свойств. current compatibility по-прежнему оставляет javascript-dom желать лучшего, но в конечном vanilla-js итоге он должен стать доступным vanilla-js для использования во всех key браузерах. (Особенно обратите javascript-execution внимание на текущую несовместимость keys с IE8!)
Object.defineProperty(Object.prototype, 'keys', {
value: function keys() {
var keys = [];
for(var i in this) if (this.hasOwnProperty(i)) {
keys.push(i);
}
return keys;
},
enumerable: false
});
var o = {
'a': 1,
'b': 2
}
for (var k in o) {
console.log(k, o[k])
}
console.log(o.keys())
# OUTPUT
# > a 1
# > b 2
# > ["a", "b"]
Однако, поскольку javascript ECMA5 уже добавил Object.keys
, вы также vanillajs можете использовать:
Object.defineProperty(Object.prototype, 'keys', {
value: function keys() {
return Object.keys(this);
},
enumerable: false
});
Оригинальный ответ
Object.prototype.keys = function ()
{
var keys = [];
for(var i in this) if (this.hasOwnProperty(i))
{
keys.push(i);
}
return keys;
}
Редактировать: Поскольку javascript-dom этот ответ существует уже vanillajs некоторое время, я оставлю javascript-dom вышеизложенное нетронутым. Любой, кто js читает это, должен также vanillajs прочитать ответ Ивана Невоструева objects ниже.
Невозможно сделать функции-прототипы javascript неперечислимыми, что приводит vanillajs к тому, что они всегда появляются keys в циклах for-in, которые javascript-dom не используют hasOwnProperty
. Я все еще .js думаю, что этот ответ был javascript-library бы идеальным, если бы расширение key прототипа Object не было .js таким запутанным.
javascript
object
key
Как найти ключи объекта?
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.