Нет, нет встроенного свойства, которое сообщает вам, сколько свойств имеет объект (это то, что вы ищете).
Самое близкое, что я могу придумать, это две функции ES5 и выше, Object.keys
(spec | MDN) и Object.getOwnPropertyNames
(spec | MDN). Например, вы можете использовать Object.keys
следующим образом:
console.log(Object.keys(quesArr).length); // "3"
Object.keys
возвращает массив имен собственных перечисляемых строковых свойств объекта. Но внутренне (теоретически) это тот цикл, который вы не хотели использовать (и полифилл для него для сред до ES5, конечно, использует цикл). Если вам также нужны неперечисляемые свойства со строковыми именами, вместо этого вы должны использовать Object.getOwnPropertyNames
.
В ES2015+ объект может иметь свойства, ключи которых являются символами, а не строками. Object.getOwnPropertySymbols
(spec | MDN) позволяет их получить.
FWIW, если вы не собираетесь использовать Array
функции объекта, не делайте его массивом. Вместо:
var quesArr = {};
quesArr["q101"] = "Your name?";
quesArr["q102"] = "Your age?";
quesArr["q103"] = "Your school?";
Эти ключи также не должны быть указаны в виде строковых литералов в квадратных скобках, если вы не хотите, чтобы они были (независимо от того, используете ли вы массив или простой объект):
var quesArr = {};
quesArr.q101 = "Your name?";
quesArr.q102 = "Your age?";
quesArr.q103 = "Your school?";
Но вы можете использовать и другие обозначения, если хотите; они полностью эквивалентны, за исключением того, что в точечной нотации ключи должны быть действительными именами идентификаторов (в скобках они могут быть любыми).
Вы даже можете сделать это:
var quesArr = {
q101: "Your name?",
q102: "Your age?",
q103: "Your school?"
};
или (если ключи не будут действительными идентификаторами):
var quesArr = {
"q101": "Your name?",
"q102": "Your age?",
"q103": "Your school?"
};
Это могут быть одинарные или двойные кавычки.
person
T.J. Crowder
schedule
12.05.2012