Буфер является просто блоком памяти, используемой для содержания данных. В самом общем смысле это обычно - единственный блоб памяти, это загружено в одной операции и затем освобождено в одном или нескольких, "примере" миски леденца 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) , пока это не записано; тогда буфер снова используется.
существуют более сложные буферные используемые схемы, например, кольцевой буфер , где некоторое конечное число буферов используется, один после следующего; как только буферы все полны, индекс "повторяется" так, чтобы первый был снова использован.
На этот вопрос нет простого ответа, потому что 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
производным .
Вы можете перебирать объект, чтобы получить ключи или значения:
function numKeys(obj)
{
var count = 0;
for(var prop in obj)
{
count++;
}
return count;
}
Это похоже на "орфографическую ошибку", но просто хочу указать, что в вашем примере неверный синтаксис, должно быть
var object = {"key1":"value1","key2":"value2","key3":"value3"};
Эта функция использует свойство 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;