Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: для новичков > Создание объекта в JavaScript


Автор: Innuendo108 23.3.2010, 22:41
Вопрос, может быть и глупый но всё же. Есть объект, который наполнен свойства, которые вскоре будут заполнены. Но сначала надо задать пустые значения. не нулевые, а пустые.
Ну для строк я могу задавать "", это не принципиально, а для чисел задавать 0 не могу. Как быть?

Код

var obj = {
   a: "",
   b: "",
   c = new Boolean,
   d = new Number
}


Так делать насколько я понял - нельзя. А как тогда это осуществить? только так:?
Код

var obj = {
  a : "",
  b : ""
}
obj.c = new Boolean;
obj.d = new Number;


Это немного не удобно для меня. Мне бы хотелось все прямо в скобках разместить, чтоб я их смог сгруппировать и удобно для себя закомментировать эти группы(разделы).

Заранее спасибо.

Автор: bars80080 23.3.2010, 23:33
Цитата(Innuendo108 @  23.3.2010,  21:41 Найти цитируемый пост)
а для чисел задавать 0 не могу

почему?

разве 
Код

var obj = {
   a: "",
   b: "",
   c: 0,
   d: false
}


не работает?

Автор: Innuendo108 24.3.2010, 07:50
0 и false это уже какое-то значение... Мне это не нужно.

или если я задам new Boolean то он по умолчанию и присвоит false?

Автор: Amphiluke 24.3.2010, 09:28
Ну присвойте им обоим undefined.
Код

var obj = {
   a: "",
   b: "",
   c: undefined,
   d: undefined
}

Автор: IDVsbruck 24.3.2010, 13:14
Только вот смысл? Думаю, если ставится такая задача, то нужно хоть упоминание - на кой?

Кстати, при дальнейшем использовании структуры
Код
var obj = {
   a: "",
   b: "",
   c: undefined,
   d: undefined
}

и
Код
var obj = {
   a: "",
   b: ""
}

будут совершенно идентичными. А присваивать можно любое значение, не обязательно по типу или так:
Код
var obj = {
   a: "",
   b: "",
   c: null,
   d: null
}


Автор: bars80080 24.3.2010, 15:01
Цитата(Innuendo108 @  24.3.2010,  06:50 Найти цитируемый пост)
0 и false это уже какое-то значение..

пустая строка - это тоже значение

Автор: Amphiluke 24.3.2010, 15:07
Цитата(IDVsbruck @  24.3.2010,  16:14 Найти цитируемый пост)
Кстати, при дальнейшем использовании структуры
<...>
будут совершенно идентичными. 


Я бы не сказал. В первом случае наличие полей c и d легко обнаруживается в цикле for...in. Во втором присутствуют только поля a и b.

Автор: IDVsbruck 24.3.2010, 18:37
Да, это 100%. Я и не сказал, что это одно и то же.
Там фраза с акцентом - "при дальнейшем использовании ..." smile

В обоих случаях при проверке на наличие переменной alert(obj.c ? "есть!" : "нету!") будет выдывать одинаковый ответ - "нету!".
Хотя с утверждением насчет for ... in однозначно согласен.
Поэтому достаточно важно, как планируется дальше использовать объект.

Автор: Innuendo108 25.3.2010, 05:21
у меня просто есть объект со свойствами. В ходе выполнения программы не все свойства задаются. Мне нужно вывести только те свойства, которые задались. просто оказывается var b= new Boolean, по умолчанию задаёт b - false. А это уже значение и оно может спутать меня с толку, если на самом деле b вообще не трогалось в программе.

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

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)