Достаточно простой:
for(var propertyName in myObject) {
// propertyName is what you want
// you can get the value like this: myObject[propertyName]
}
Теперь, Вы не получите частные переменные этот путь, потому что они не доступны.
РЕДАКТИРОВАНИЕ: @bitwiseplatypus корректен, что, если Вы не используете hasOwnProperty()
метод, Вы получите свойства, которые наследованы - однако, я не знаю, почему любой знакомый с объектно-ориентированным программированием ожидал бы что-либо меньше! Как правило, кто-то, который поднимает это, был подвергнут предупреждениям Douglas Crockford об этом, которые все еще смущают меня немного. Снова, наследование является нормальной частью языков OO и является поэтому частью JavaScript, несмотря на него являющийся формирующим прототип.
Теперь, однако hasOwnProperty()
полезны для фильтрации, но мы не должны звучать как предупреждение, как будто существует что-то опасное в получении унаследованных свойств.
РЕДАКТИРОВАНИЕ 2: @bitwiseplatypus поднимает ситуацию, которая произошла бы, должен кто-то добавить свойства/методы к Вашим объектам в моменте времени позже чем тогда, когда Вы первоначально записали свои объекты (через его прототип) - в то время как это верно, что это могло бы вызвать неожиданное поведение, я лично не рассматриваю что как свою проблему полностью. Просто дело вкуса. Кроме того, что, если я разрабатываю вещи таким способом, которым я использую прототипы во время конструкции моих объектов и все же имею код, который выполняет итерации по свойствам объекта и я хочу все унаследованные свойства? Я не использовал бы hasOwnProperty()
. Затем скажем, кто-то добавляет новые свойства позже. Тот мой отказ то, если вещи ведут себя плохо в той точке? Я не думаю так. Я думаю, что это - то, почему jQuery, как пример, определил способы расшириться, как он работает (через jQuery.extend
и jQuery.fn.extend
).
Результат, показанный sudo lsblk -o NAME,FSTYPE,SIZE,MOUNTPOINT,LABEL
, выполняет вычисления с помощью двоичный префикс т.е. кратные числа 1024 (который является 2 <глоток> 10 глоток>). Так 500 107 862 016 байтов были бы равны 465,76 ГБ или [приблизительно 119] 466 ГБ . (Можно использовать -b
переключатель для печати в байтах вместо человекочитаемого как sudo lsblk -b -o NAME,FSTYPE,SIZE,MOUNTPOINT,LABEL
.)
Calculation:
500107862016 bytes = (500107862016 / (1024 ^ 3)) GB = 465.76 GB
, В то время как Дисковая Утилита использует десятичный префикс для вычисления так выраженного как кратные числа [1 110] 1000 . Так 500 107 862 016 байтов здесь означали бы 500,11 ГБ или 500 ГБ [приблизительно 1 114] Calculation:
500107862016 bytes = (500107862016 / (1000 ^ 3)) GB = 500.11 GB
Просто предположение, но я предположил бы, что терминальная команда дает Вам фактический размер раздела, в то время как gparted дает Вам размер доступное использование текущих настроек размера выделения. При форматировании раздела, файловая система использует размер выделения (также названный размером кластера), чем больше размер, тем меньше устройства хранения данных Вы получаете из-за неэффективного использования, но можно получить более быстрые скорости записи как компромисс при записи больших файлов.
Я не знаю это для факта, но я предположил бы, что Дисковая утилита говорит Вам фактический размер, и Gparted говорит Вам функционирующий размер, так как файловая система и таблица разделов берут некоторую комнату. Размеры выделения не являются фактором, потому что они не занимают место, это - просто установка.