Проверьте ваш главный диалог настроек для страниц с тегами задач. Введите «задача» в поле поиска в верхнем левом углу диалогового окна, чтобы помочь вам найти соответствующие страницы. Для файлов XML я знаю, что эта функция по умолчанию отключена.
Хотя реализации JS могут отслеживать такое значение внутренне, стандартного способа получить его не существует.
Раньше вариант Javascript Mozilla предоставлял нестандартный __ count __
, но он был удален в версии 1.8.5.
Для кроссбраузерности сценариев вы застряли явный перебор свойств и проверка hasOwnProperty ()
:
function countProperties(obj) {
var count = 0;
for(var prop in obj) {
if(obj.hasOwnProperty(prop))
++count;
}
return count;
}
В случае реализаций, поддерживающих ECMAScript 5, это также можно записать как (Престижность Avi Flax )
function countProperties(obj) {
return Object.keys(obj).length;
}
Keep помните, что вы также пропустите свойства, которые нельзя перечислить (например, длина массива
).
Если вы используете фреймворк, например jQuery, Prototype, Mootools, $ any-the-newest -хайп,проверьте, поставляются ли они со своим собственным API коллекций, что может быть лучшим решением вашей проблемы, чем использование собственных объектов JS.
function count(){
var c= 0;
for(var p in this) if(this.hasOwnProperty(p))++c;
return c;
}
var O={a: 1, b: 2, c: 3};
count.call(O);
AFAIK, надежного способа сделать это невозможно, если вы не переключитесь на массив. Что, честно говоря, не кажется странным - мне кажется довольно очевидным, что массивы можно считать, а объекты - нет.
Вероятно, самое близкое, что вы получите, это что-то вроде этого
// Monkey patching on purpose to make a point
Object.prototype.length = function()
{
var i = 0;
for ( var p in this ) i++;
return i;
}
alert( {foo:"bar", bar: "baz"}.length() ); // alerts 3
Но это создает проблемы, или хотя бы вопросы. Подсчитываются все созданные пользователем свойства, включая саму функцию _length! И хотя в этом простом примере вы можете избежать этого, просто используя обычную функцию, это не значит, что вы можете запретить другим скриптам делать это. так что ты делаешь? Игнорировать свойства функции?
Object.prototype.length = function()
{
var i = 0;
for ( var p in this )
{
if ( 'function' == typeof this[p] ) continue;
i++;
}
return i;
}
alert( {foo:"bar", bar: "baz"}.length() ); // alerts 2
В конце концов, я думаю, вам, вероятно, следует отказаться от идеи делать ваши объекты счетными и найти другой способ делать то, что вы делаете.
Понятие числа / длины / размерности на самом деле не имеет смысла для Объекта, и необходимость в нем наводит на мысль, что вы действительно хотите мне Массив.
Редактировать: Я указал мне, что вам нужен O (1) для этого. Насколько мне известно, я боюсь, что такого пути не существует.