Javascript.RU

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

ссылка на объект в функции
Никак не могу найти ответ на, казалось бы, простой вопрос.
Как создать глобальный экземпляр класса внутри функции по ссылке на глобальную переменную? JS не знаю, написал так, как бы сделал это на c++.
var Some={};

function MyObj()
{
    this.val = 5;
}

function CreateSomeObj(globalVar)
{
    globalVar = new MyObj();
}

CreateSomeObj(Some);


Так не работает. Вернее объект выходит из области видимости после конца функции. Как же быть?
Ответить с цитированием
  #2 (permalink)  
Старый 10.04.2011, 00:34
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Еще бы: Вы локальной переменной, содержащей ссылку на window.Some, присваиваете ссылку на новый объект. Само собой, window.Some совсем не изменится.
function CreateSomeObj()
{
    globalVar = new MyObj();
}

CreateSomeObj();
Ответить с цитированием
  #3 (permalink)  
Старый 10.04.2011, 00:47
Новичок на форуме
Отправить личное сообщение для hotcooler17 Посмотреть профиль Найти все сообщения от hotcooler17
 
Регистрация: 10.04.2011
Сообщений: 3

Боюсь, вы не поняли сути проблемы. Обрисую по другому. Есть PHP скрипт, который генерирует js код для клиента. В зависимости от прав доступа в конечный код включены разные глобальные переменные, объекты в которых, в той или иной мере, одинаковы. Т.е. на момент вызова функции CreateSomeObj не известно кол-во и имена глобальных переменных. По сути от функции требуется создавать объекты, которые частично идентичны друг другу. Иными словами - таблица с одинаковыми размерами и полями, но разными данными.

Последний раз редактировалось hotcooler17, 10.04.2011 в 00:51.
Ответить с цитированием
  #4 (permalink)  
Старый 10.04.2011, 04:31
Аватар для Aetae
Любитель
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 5,633

function MyObj()
{
    this.val = 5;
}

function CreateSomeObj(globalVar)
{
    window[globalVar] = new MyObj();
}

CreateSomeObj('Some');

alert(Some.val)

Скорей всего, это неверное решение неверно(для js) поставленной задачи, но большего не вникая не понять.
__________________
29375, 35
Ответить с цитированием
  #5 (permalink)  
Старый 10.04.2011, 13:40
Новичок на форуме
Отправить личное сообщение для hotcooler17 Посмотреть профиль Найти все сообщения от hotcooler17
 
Регистрация: 10.04.2011
Сообщений: 3

Спасибо, работает. Если вам интересна задача - используется grid из ExtJS для чтения/редактирования таблиц. Таблиц много, у разных пользователей - разные права доступа к ним. В зависимости от этого php генерирует разный код для js. Цель этого решения - минимизировать разницу выходного(из php) результата. По сути функция должна получать набор входных данных, разбивать их (некоторые данные для ColumnModel, другие - для Store), создавать 4 объекта на основе данных - вкладка, стор, модель колонок и сам грид. Под данными в этом случае понимается не содержимое таблиц, а "конфиги" объектов.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
bind: как передать функции указатель на объект trial jQuery 4 25.05.2010 00:35
Подскажите по CSS меню Александр_1988 Элементы интерфейса 1 17.05.2010 10:58
this как ссылка на сам объект HelpeR Events/DOM/Window 1 21.02.2010 14:40
Ссылка на объект JSprog Общие вопросы Javascript 6 17.08.2009 16:01
Ссылка на объект при использовании attachEvent Octane Events/DOM/Window 13 23.07.2008 16:37