Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
 Аватар для iRomul
163 / 104 / 14
Регистрация: 17.10.2012
Сообщений: 488

Объекты и методы

24.05.2013, 01:11. Показов 771. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день! Есть такой код:

JavaScript
1
2
3
4
5
6
7
8
9
a = new Object();
a.s = "1"; //Создаю некоторую структуру объекта
a.q = function() {alert(this.s)};
    
b = new Object();
b = a; //Создаю еще один объект с такой же структурой
b.s = "2";
a.q(); //"2"
b.q(); //"2"
Как видно из кода - в обоих случаях выводится двойка. Мне же нужно, что бы функция выводила значения для каждого объекта. Т.е. что-то вроде этого:

C++
1
2
3
4
5
6
7
8
9
10
11
12
class foo {
public:
  int a;
  void q() { printf(a); }
}
 
foo x;
foo y;
x.a = 5;
y.a = 6;
x.q(); //5
y.q(); //6
Как такое делается в JS? Заранее спасибо!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.05.2013, 01:11
Ответы с готовыми решениями:

Методы и объекты. Ошибка в коде
Привет всем!!! :) прохожу сейчас курсы на codeacademy по JavaScript. Вроде выполнила всё задание правильно,по образцу, а компилятор...

Объекты и методы, не могу разобраться как работает кусочек кода
Всем привет. Помогите понять логику работы данного кусочка кода. (function (global, factory) { factory(global.TEST = global.TEST...

Встроенные объекты Java Script. Объекты Array, Date
Создать массив, содержащий названия элементов, находящихся в системном блоке компьютера. Добавить к нему массив, содержащий названия ...

6
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
24.05.2013, 01:47
в javascript'e присвоение объектов не делает их близнецами/клонами
второй объект является просто ссылкой на первый

можете в этом удостовериться, прописав последней строкой кода alert (a === b);
запустив, увидите true, что говорит даже не о равенстве, а о тождественности объектов a и b

так что... в строке #7 вашего кода вы создали не "ещё один объект с такой же структурой", а сделали просто ссылку на первый объект
0
 Аватар для iRomul
163 / 104 / 14
Регистрация: 17.10.2012
Сообщений: 488
24.05.2013, 01:51  [ТС]
Т.е. придётся делать таким способом? Просто этот способ мне непонятен. Надо-то всего лишь создать 2 примитивных объекта. Есть способы попроще?
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
24.05.2013, 01:52
---------
0
 Аватар для iRomul
163 / 104 / 14
Регистрация: 17.10.2012
Сообщений: 488
24.05.2013, 01:59  [ТС]
ага
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
24.05.2013, 02:07
это у меня случайно вышло


замените строку #7 вашего кода на строку for (var key in a) b [key] = a [key];
таким образом вы все свойства и методы* первого объекта передадите второму
и вот тогда они будут двумя разными объектами
и в этом можно убедиться, сразу после новой строки #7 прописав alert (a === b) - даст false

*методами объекта почему-то называют те же свойства, имеющие своими значениями функции
1
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
24.05.2013, 15:32
iRomul, См. также:
http://dmitrysoshnikov.com/ecm... mentation/
http://phrogz.net/JS/Classes/OOPinJS2.html
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.05.2013, 15:32
Помогаю со студенческими работами здесь

Объекты и методы Access
Кто подскажет ссылку на электронную документацию на русском, описывающую объекты и методы Access для работы с БД через VBA- перемещение по...

Классы. Объекты. Методы
Доброго времени суток! Вот задачка. Я пока начинающий в этом деле, так что не очень понятно... Создать класс "дата". Данные...

новые методы и объекты
1 курс, начинаем изучать с#, не могу сообразить как сделать задачу: Создать программу с двумя кнопками на форме, динамически порождающую...

Введение в классы, объекты и методы
Создать классы, спецификации которых приведены ниже. Определить конструкторы и методы set*(), get*(), toString(). Определить дополнительно...

Классы и объекты. Методы, конструкторы
1.В рамках консольного приложения создать класс MyClass с полями a и b и методом g, служащим для вычисления значения функции: a+b ...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru