Как я считаю JavaScript атрибутами объекта? [дубликат]

Буфер является просто блоком памяти, используемой для содержания данных. В самом общем смысле это обычно - единственный блоб памяти, это загружено в одной операции и затем освобождено в одном или нескольких, "примере" миски леденца Perchik. В программе C, например, Вы могли бы иметь:

#define BUFSIZE 1024
char buffer[BUFSIZE];
size_t len = ;

// ... later
while((len=read(STDIN, &buffer, BUFSIZE)) > 0)
    write(STDOUT, buffer, len);

..., который является минимальной версией CP (1) . Здесь, буферный массив используется для хранения данных, считанных , читает (2) , пока это не записано; тогда буфер снова используется.

существуют более сложные буферные используемые схемы, например, кольцевой буфер , где некоторое конечное число буферов используется, один после следующего; как только буферы все полны, индекс "повторяется" так, чтобы первый был снова использован.

160
задан Sasha Chedygov 29 March 2012 в 20:49
поделиться

3 ответа

На этот вопрос нет простого ответа, потому что Object - от которого происходит каждый объект в JavaScript - автоматически включает множество атрибутов. , а точный набор атрибутов, который вы получите, зависит от конкретного интерпретатора и от того, какой код выполнялся до вашего. Итак, вам нужно каким-то образом отделить те, которые вы определили, от тех, которые вы получили «бесплатно».

Вот один способ:

var foo = {"key1": "value1", "key2": "value2", "key3": "value3"};
Object.prototype.foobie = 'bletch'; // add property to foo that won't be counted

var count = 0;
for (var k in foo) {
    if (foo.hasOwnProperty(k)) {
       ++count;
    }
}
alert("Found " + count + " properties specific to foo");

Вторая строка показывает, как другой код может добавлять свойства ко всем Object производным .

104
ответ дан 23 November 2019 в 21:27
поделиться

Вы можете перебирать объект, чтобы получить ключи или значения:

function numKeys(obj)
{
    var count = 0;
    for(var prop in obj)
    {
        count++;
    }
    return count;
}

Это похоже на "орфографическую ошибку", но просто хочу указать, что в вашем примере неверный синтаксис, должно быть

var object = {"key1":"value1","key2":"value2","key3":"value3"};
12
ответ дан 23 November 2019 в 21:27
поделиться

Эта функция использует свойство Mozilla __ count __ , если оно доступно, поскольку оно быстрее, чем итерация по каждому свойству.

function countProperties(obj) {
  var count = "__count__",
  hasOwnProp = Object.prototype.hasOwnProperty;

  if (typeof obj[count] === "number" && !hasOwnProp.call(obj, count)) {
    return obj[count];
  }
  count = 0;
  for (var prop in obj) {
    if (hasOwnProp.call(obj, prop)) {
      count++;
    }
  }
  return count;
};

countProperties({
  "1": 2,
  "3": 4,
  "5": 6
}) === 3;
5
ответ дан 23 November 2019 в 21:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: