Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.09.2013, 13:49
Новичок на форуме
Отправить личное сообщение для lacinho Посмотреть профиль Найти все сообщения от lacinho
 
Регистрация: 01.09.2013
Сообщений: 4

Локальные переменные как массив
Добрый день!

Подскажите, пожалуйста, можно ли сделать на Javascript так, чтобы получить доступ к локальным переменным, объявленным внутри некой функции как к именованному массиву некоей системной переменной, т.е. можно ли сделать рабочим, например, такой код:
function test() {
 var a, b, c;
 for (var internalVariable in test.variables) alert(internalVariable);
}


В данном коде объект test.variables является вымышленным, и по-идее должен быть заменен на некую ссылку в пространстве имен функции test.
Ответить с цитированием
  #2 (permalink)  
Старый 01.09.2013, 14:04
Профессор
Отправить личное сообщение для Dmitriyff Посмотреть профиль Найти все сообщения от Dmitriyff
 
Регистрация: 22.07.2012
Сообщений: 164

function test() {
  test.variables = { a: 1, b: 2, c: 3};
  for (var internalVariable in test.variables) alert(internalVariable);
}
Ответить с цитированием
  #3 (permalink)  
Старый 01.09.2013, 14:28
Новичок на форуме
Отправить личное сообщение для lacinho Посмотреть профиль Найти все сообщения от lacinho
 
Регистрация: 01.09.2013
Сообщений: 4

Спасибо за ответ, но так я уже умею, и это не совсем то, что мне хотелось бы получить.
Нужно, чтобы массив содержал переменные объявленные именно так, как в моем примере, через var по одной, а вызвать их потом общим системным массивом. По аналогии window.имя для глобальных переменных.
Ответить с цитированием
  #4 (permalink)  
Старый 01.09.2013, 19:31
Профессор
Отправить личное сообщение для Яростный Меч Посмотреть профиль Найти все сообщения от Яростный Меч
 
Регистрация: 12.04.2010
Сообщений: 557

По сабжу: никак.

А зачем это понадобилось?
Ответить с цитированием
  #5 (permalink)  
Старый 01.09.2013, 21:21
Новичок на форуме
Отправить личное сообщение для lacinho Посмотреть профиль Найти все сообщения от lacinho
 
Регистрация: 01.09.2013
Сообщений: 4

Никак нельзя, да?... Жаль(((
А понадобилось это вот зачем: есть у меня одна функция в которой есть много переменных, эта функция уже почти написана, и в ней широко используются эти переменные как простые переменные, а теперь мне нужно все эти величины передать как аргументы в другую внешнюю функцию, на которую будут ссылаться и другие функции, и в этой новой функции будут выполнены некоторые операции над этими переменными и их нужно вернуть в вызывающую функцию. Все это требует упаковывать в объект, а потом распаковывать, просто подумал, мож можно эти операции через цикл-массив провести, но жаль, что так просто и красиво не получается(((
Ответить с цитированием
  #6 (permalink)  
Старый 02.09.2013, 00:00
Профессор
Отправить личное сообщение для Яростный Меч Посмотреть профиль Найти все сообщения от Яростный Меч
 
Регистрация: 12.04.2010
Сообщений: 557

Сообщение от lacinho
функция уже почти написана, и в ней широко используются эти переменные как простые переменные
идея в наброске:
function func1(obj) {
    // в объекте переменные из main
    // их можно перечислить.
    obj.a = 5;
    obj.b = 6;
}

function main() {
    // объявили переменные
    var vars = {
        a: null,
        b: null,
        c: null
    };
    with(vars) {
        // здесь офигительная логика с переменными
        a = 'test';
        c = 222;
        console.log(vars);

        // вызов внешней функции, передача набора переменных
        func1(vars);
        console.log(vars);
    }
}

main();


http://jsfiddle.net/MhqtH/
Ответить с цитированием
  #7 (permalink)  
Старый 02.09.2013, 01:29
Новичок на форуме
Отправить личное сообщение для lacinho Посмотреть профиль Найти все сообщения от lacinho
 
Регистрация: 01.09.2013
Сообщений: 4

Какое изящное получилось решение. Это действительно работает и делает все как нужно! Да, самому бы мне до такого не дойти было, да и искал, как получается, немного в другом направлении))

Что-ж, весьма благодарен, огромное Вам спасибо!
Ответить с цитированием
  #8 (permalink)  
Старый 02.09.2013, 05:34
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

function test(a, b, c, d) {
   a = 1;
   b = 11;
   c = true;
   d = 'Hello';
   
   alert(arguments);
}

test();
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как поместить результаты выборки в массив hardware jQuery 10 10.08.2013 20:59
Как создать двумерный массив с помощью циклов. dima*** Ваши сайты и скрипты 30 16.12.2012 13:58
Как записать в массив новый объек а не ссылку на исходный объект Casufi Общие вопросы Javascript 12 08.02.2010 02:40
как записать id всех элементов в массив? SunYang Общие вопросы Javascript 21 06.02.2010 22:50
Как удалить массив? SunYang Общие вопросы Javascript 14 05.02.2010 14:31