С Новым годом! Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 1
Регистрация: 06.07.2015
Сообщений: 27

Как инициализировать некоторые свойства объекта в зависимости от условий?

07.12.2016, 12:31. Показов 899. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
JavaScript
1
2
3
4
5
6
7
obj=
{
name: 'иван',
city: 'Москва',
 
age: '18'//по умолчанию 18 лет. Это свойство и вовсе может отсутствовать
}
есть главная функция, которая возращает то, что хочу увидеть на экране.

вариант а:
JavaScript
1
2
3
4
5
6
 function getAnswer()
{
obj.age =30
 
return obj.name+obj.age; 
}
вариант 'a' работает как надо, то есть мы видим на экране: Иван30

если затем, я между obj.age=30 и return вызову какую-нибудь функцию, и в ней использую объект obj , то возраст останется прежним, т.е18. Я не понимаю почему так происходит, ведь на скольок мне известно в js значение передается по ссылке. По идеи я должен получить в свойстве age 30. А получаю 18.

вариант б:
....
JavaScript
1
2
3
4
5
6
7
8
9
10
11
function dop ()
{
return obj.age;
}
 
 function getAnswer()
{
obj.age =30
return dop(); 
return obj.name+obj.age; 
}
в варианте 'б' должен получить 30, а получаю 18. Соответсвенно если свойство вообще не определено, то получаю undefined.
пробовал через констурктор, вроде как получилось что мне надо, но дело в том, что когда я писал скрипт где-то летом, мне не было надобности инициализировать сов-ва объекта в процессе выполнения программы, т.е мой obj был тривиальный : obj ={ name: петя, age: 20,.....и таких свойств много было} и инициализирвались все свойства на этапе компиляции. Сейчас понадобилась возможность, что бы пользователь сам вводил свой возраст. Не хочется весь основной код менять из-за того что надо использовать конструктор, да и к тому же, если локальный объект делать, то его надо передавать во все остальные функции как параметр, а этого делать совсем не хочется, т.к и без этого есть что передавать. Как вы уже поняли, объект мне нужен глобальный, для простоты кода, что бы он был виден в любой функции.
Я совсем не давно начал заниматься, помогите знатоки пожалуйста, проблема-то элементарная.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.12.2016, 12:31
Ответы с готовыми решениями:

Как правильно инициализировать свойства объекта?
Добрый день, товарищи-форумчане! Помогите с VB net. Имеется следующий класс Partial Public Class pledgeNotificationPackageType ...

Как не апдейтить некоторые поля в зависимости от условий?
Имеется две таблицы. В каждой из них довольно много полей. Каждую ночь проводится Job, заключающаяся в том что запускается Stored...

Видимость свойства объекта в PropertyGrid в зависимости от двух других свойств
Организовать видимость свойства объекта в PropertyGrid в зависимости от другого свойства можно сделать легко. Ниже свойство Animal видно...

5
Эксперт JS
2463 / 1769 / 625
Регистрация: 11.07.2016
Сообщений: 4,067
07.12.2016, 13:36
JavaScript
1
2
3
4
5
6
7
var obj=
{
name: 'иван',
city: 'Москва',
 
age: '18'//по умолчанию 18 лет. Это свойство и вовсе может отсутствовать
}
Добавлено через 7 минут
Ваш код в песочнице: http://codepen.io/anon/pen/YpLLMr
Возвращается 30, как вы и задумывали
0
the hardway first
Эксперт JS
 Аватар для j2FunOnly
2475 / 1847 / 910
Регистрация: 05.06.2015
Сообщений: 3,610
07.12.2016, 14:14
Yasuro, как-то слишком всё абстрактно. В ваше сумбурное описание проблемы не вчитывался, но:
JavaScript
1
2
3
4
5
function getAnswer () {
  obj.age = 30;
  return dop();
  return obj.name+obj.age; // ! этот код никогда не выполнится
}
Добавлено через 3 минуты
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
obj = {
    name: 'иван',
    city: 'Москва',
    // age: '18' //по умолчанию 18 лет. Это свойство и вовсе может отсутствовать
}
 
function dop (age) {
    obj.age = age;
}
 
function getAnswer () {
    // obj.age =30
    dop(30); 
    return obj.name+obj.age; 
}
 
alert(getAnswer());
0
Эксперт JS
2463 / 1769 / 625
Регистрация: 11.07.2016
Сообщений: 4,067
07.12.2016, 14:19
j2FunOnly,
JavaScript
1
return dop();
ТС добавил в качестве теста (если я правильно его понял)
0
0 / 0 / 1
Регистрация: 06.07.2015
Сообщений: 27
07.12.2016, 21:34  [ТС]
Мужики, извините, поторопился, быстро написал утром, торопился, в итоге не донес в чем проблема.
после того как я свойтв в объекте инициализирую, мне надо это-же свойство использовать в в другом свойстве этого объетка.
JavaScript
1
2
3
4
5
6
7
8
9
var obj =
{
name: 'vasy' + this.age
} 
fubctiongetAnswer()
{
obj.age =20;
return obj,.name;
}
хочу увидеть на экране vasy20
вижу на экране vasyundefined
вот в чем вся проблема.
Если я свойтсво age инициализирую в объекте заранее, например age=27, то увижу vasy27, а хочу увидеть vasy20
0
the hardway first
Эксперт JS
 Аватар для j2FunOnly
2475 / 1847 / 910
Регистрация: 05.06.2015
Сообщений: 3,610
07.12.2016, 23:28
Так ничего не выйдет, делайте функцию.
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
var obj = {
  name: 'Vasia',
  getInfo: function() {
    return this.name + (this.age || ' age not available');
  }
}
 
function getAnswer() {
  return obj.getInfo();
}
 
obj.age = 30;
alert(getAnswer());
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.12.2016, 23:28
Помогаю со студенческими работами здесь

PropertyGrid. Как отловить видимость свойства в зависимости от другого свойства?
Работаю с propertyGrid. Одно поле высвечивается, когда в другом появляется определенное значение. Взяла за основу раздел «Как управлять...

Как инициализировать глобальную переменную в зависимости от количества строк в файле
Есть переменная типа int glob = 3; объявлена в не main(), т.е. глобальная. После неё, тоже не в mаin, объявлены структуры ex: struct...

Как сделать цепочку условий в зависимости от выбора элемента в ComboBox?
Здравствуйте! Прошу помочь мне в выборе способа обработки элемента ComboBox в данной ситуации: Я решил создать программу перевода...

Как в производном классе скрыть некоторые свойства и методы базового?
Есть класс, производный от некого базового класса. Как в моем классе скрыть некоторые свойства и методы базового?

Создать Generic Mapper, который будет мапить схожие свойства одного объекта в свойства другого
Нужно создать generic mapper, который будет мапить схожие(similar) свойства одного объекта в свойства другого(по имени и типу) меду двумя...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru