Как найти ключи объекта?
Для производственного кода, требующего objects большой совместимости с клиентскими object браузерами, я по-прежнему .js рекомендую Ivan Nevostruev's answer с прокладкой, чтобы keys обеспечить Object.keys
в старых браузерах. Однако objects можно получить требуемую objects функциональность с помощью javascript новой функции ECMA defineProperty
.
Начиная с ECMAScript 5 — Object.defineProperty
Начиная object с ECMA5, вы можете использовать vanillajs Object.defineProperty()
для определения неперечислимых javascript-execution свойств. current compatibility по-прежнему оставляет object желать лучшего, но в конечном key итоге он должен стать доступным object для использования во всех objects браузерах. (Особенно обратите js внимание на текущую несовместимость javascript-dom с 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"]
Однако, поскольку ecmascript ECMA5 уже добавил Object.keys
, вы также vanilla-javascript можете использовать:
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-library этот ответ существует уже js некоторое время, я оставлю javascript-execution вышеизложенное нетронутым. Любой, кто vanilla-js читает это, должен также vanilla-js прочитать ответ Ивана Невоструева objects ниже.
Невозможно сделать функции-прототипы vanillajs неперечислимыми, что приводит javascript к тому, что они всегда появляются javascript-execution в циклах for-in, которые javascript не используют hasOwnProperty
. Я все еще vanilla-js думаю, что этот ответ был javascript-dom бы идеальным, если бы расширение js прототипа Object не было keys таким запутанным.
javascript
object
key
Как найти ключи объекта?
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.