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

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

07.12.2016, 12:31. Показов 903. Ответов 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru