Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.09.2014, 15:04
Интересующийся
Отправить личное сообщение для devastor Посмотреть профиль Найти все сообщения от devastor
 
Регистрация: 09.09.2014
Сообщений: 27

Вызов функции из функции
//вызов главной функции, когда карта готова
ymaps.ready(init);
//главная функция 
function init() {
	//здесь описание всех функций
	function func1(){
	//тело
	}
	function func2(){
	//тело
	}
	function funcN(){}
}

При использовании api яндекс карт от функции "init()" отказаться нельзя, но при этом есть необходимость обращаться к func1(), func2() вне функции "init()", как это возможно сделать?
Это читал не помогло!
При чем функцию по событию можно вызвать следующим образом:
//вызов главной функции, когда карта готова
ymaps.ready(init);
//главная функция 
function init() {
	document.getElementById('id').[событие] = function(){
			//тело
		}
}

Но если одну и ту же функцию нужно вызывать по нескольким событиям - то такой способ не удобен
Быть может есть что то вроде, это могло бы упростить задачу:
document.getElementById('id1').[событие] || 
(document.getElementById('id2').[событие]) = function(){
			//тело
		}

Спасибо за внимание, надеюсь на помощь - очень хочется разобраться1

Последний раз редактировалось devastor, 12.09.2014 в 15:30.
Ответить с цитированием
  #2 (permalink)  
Старый 12.09.2014, 15:24
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 13,793

Сообщение от devastor Посмотреть сообщение
Это читал не помогло!
Там такой вариант предлагали...

/* так создать */
var o=new init();
/* так вызывать */
o.func1run();
o.func2run();
//главная функция 
function init() {
	//здесь описание всех функций
	function func1(){
		//тело
		alert(1)
	};
	/* это нужно дописать */
	this.func1run = func1;
	function func2(){
		//тело
		alert(2);
	};
	/* это нужно дописать */
	this.func2run = func2;
};
Ответить с цитированием
  #3 (permalink)  
Старый 12.09.2014, 15:25
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 13,793

Но предупреждали!

Сообщение от B@rmaley.e><e Посмотреть сообщение
А this (при вызове как функция, а не конструктор) = window. Вот и загрязняем глобальное пространство имен.
Ответить с цитированием
  #4 (permalink)  
Старый 12.09.2014, 16:06
Интересующийся
Отправить личное сообщение для devastor Посмотреть профиль Найти все сообщения от devastor
 
Регистрация: 09.09.2014
Сообщений: 27

Сообщение от ksa Посмотреть сообщение
Вот и загрязняем глобальное пространство имен
А чем это чревато? Есть какие то минусы от загрязнения глобального пространства, кроме путаницы в названиях?
Ответить с цитированием
  #5 (permalink)  
Старый 12.09.2014, 16:12
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,103

Есть какие то минусы от загрязнения комнаты, кроме того что можешь вляпаться в грязь?
__________________
29375, 35
Ответить с цитированием
  #6 (permalink)  
Старый 12.09.2014, 16:14
Интересующийся
Отправить личное сообщение для devastor Посмотреть профиль Найти все сообщения от devastor
 
Регистрация: 09.09.2014
Сообщений: 27

Сообщение от Aetae Посмотреть сообщение
Есть какие то минусы от загрязнения комнаты, кроме того что можешь вляпаться в грязь?
Если вопрос не риторический, то да есть много(болезни, развитие инфекций, плесень), а можно поконкретней - чем это чревато, гугл партизанит(
Нашёл, что могут быть проблемы ещё с подключаемыми библиотеками, спасибо)
Ответить с цитированием
  #7 (permalink)  
Старый 12.09.2014, 16:18
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,103

Если ты пишешь код один - то почти никаких.
Если же используются сторонние скрипты или код пишет кто-то ещё, то могут возникнуть коллизии. В лучшем случае код перестанет работать, в худшем - неуловимые баги.
__________________
29375, 35
Ответить с цитированием
  #8 (permalink)  
Старый 12.09.2014, 16:23
Интересующийся
Отправить личное сообщение для devastor Посмотреть профиль Найти все сообщения от devastor
 
Регистрация: 09.09.2014
Сообщений: 27

Сообщение от Aetae Посмотреть сообщение
Если ты пишешь код один - то почти никаких.
Если же используются сторонние скрипты или код пишет кто-то ещё, то могут возникнуть коллизии. В лучшем случае код перестанет работать, в худшем - неуловимые баги.
Ясно спасибо, к сожалению пишу не один, придётся придумывать сложные имена функций
Ответить с цитированием
  #9 (permalink)  
Старый 12.09.2014, 16:50
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,103

Ну чтоб не загрязнять глобальную область можно просто ограничиться своей функцией:
(function(){
    var func1, func2, funcN;
    ymaps.ready(init);
    //главная функция
    function init() {
        //здесь описание всех функций
        func1 = function func1(){
            //тело
        }
        func2 = function func2(){
        //тело
        }
        funcN = function funcN(){}
    }
}());
Только, само собой, надо учитывать, что пока ymaps не загрузится и не запустит init - функции доступны не будут.
__________________
29375, 35
Ответить с цитированием
  #10 (permalink)  
Старый 12.09.2014, 16:53
Аватар для BETEPAH
Профессор
Отправить личное сообщение для BETEPAH Посмотреть профиль Найти все сообщения от BETEPAH
 
Регистрация: 23.06.2011
Сообщений: 1,165

Сообщение от devastor
придётся придумывать сложные имена функций
как вариант, создать свой глобальный объект и собирать свои функции и переменные в нём.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Повторный вызов функции TorchTT Общие вопросы Javascript 4 20.03.2014 19:20
Вызов функции из скрытого iframe Beer75 Общие вопросы Javascript 2 05.06.2013 20:36
Как временно запретить вызов функции? Dazar Общие вопросы Javascript 9 02.09.2012 21:52
Анимация массива с элементами, и вызов функции по завершению. Broken jQuery 5 30.08.2012 19:35
Двойной вызов функции Tmin10 jQuery 8 08.12.2011 13:19