Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   копировать переменную по ссылке (https://javascript.ru/forum/misc/9598-kopirovat-peremennuyu-po-ssylke.html)

Aleko 26.05.2010 21:28

копировать переменную по ссылке
 
Задача: создать две ссылки на одну переменную. Пример - есть переменная a=5, необходимо сделать так чтобы переменная b была всегда в точности равна a, даже если a изменится. Ума не приложу как это сделать.

B@rmaley.e><e 26.05.2010 21:38

(function(){
var d = {a:5},
    b = d;
d.a = 6;
alert(b.a)
})()

Aleko 26.05.2010 21:41

Да это то ясно...
тут снова одна и та же переменная только в разных обертках, а нужно чтобы 2 переменных было. Смысл в чем:
длиннаяРасписаннаяПеремен наяДляПользователя=5
короткПеремДляСкрипта= // то же самое

Kolyaj 26.05.2010 21:45

Цитата:

Сообщение от Aleko
создать две ссылки на одну переменную

Никак.

Но, например,
длиннаяРасписаннаяПеремен наяДляПользователя=5
функцияСКороткимИменемВоз врПеременнуюДляПользовате ля

Вообще исходя из задачи нужно делать.

Aleko 26.05.2010 21:50

Kolyaj, можно подробнее?

mycoding 26.05.2010 21:59

Уже задовался этим вопросом. Если хочется получить что-то похоже как в C++, то не получится.

B@rmaley.e><e 26.05.2010 22:00

d = function(){
  var veryLongVariable = 5,
*!*       fnc = function(){return veryLongVariable};*/!*
  setInterval(function(){
     veryLongVariable = Math.random()*10|0;
  }, 1000);
  return fnc;
}();
setTimeout(function(){
  if(confirm('Значение: '+d() + '\nПродолжить?')) setTimeout(arguments.callee, 500);
}, 500);

Aleko 26.05.2010 22:18

B@rmaley.e><e, это да, но снова не идеал. Так как изменение короткой переменной не будет влиять на длинную. Но мне это всё таки поможет кое в чем.. спасибо.

Kolyaj 26.05.2010 22:20

Сделайте из функции гетер/сетер. Если аргумент пришёл в функцию, то меняем переменную, если не пришёл, то возвращаем.

Aleko 26.05.2010 22:40

Kolyaj, подробнее пожалуйста))


Часовой пояс GMT +3, время: 10:04.