Javascript.RU

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

Проблемы вызова функции
Привет, друзья!

Проблема в следующем:
Не получается вызвать одну функцию(init()) в теле другой, пишет init is not defined, что, вероятно, указывает на недоступность в связи с областью видимости.

Функция init определена в такой области в файле a.js:

(function ($) {
 $( pieChart );

 function pieChart() {
   function init()
 }
  
})(jQuery)


и я хочу вызвать ее в другой функции другого файла(b.js) и в другой области видимости

Скажите пожалуйста, можно каким-либо образом вызвать функцию, указав соответствующую область видимости? В общем подскажите, как решить мою проблему. Спасибо!
Ответить с цитированием
  #2 (permalink)  
Старый 15.03.2012, 14:15
Аспирант
Отправить личное сообщение для Harvey Посмотреть профиль Найти все сообщения от Harvey
 
Регистрация: 19.08.2011
Сообщений: 61

Да, понятно, что так некрасиво.
Нашел все таки другой выход - объединил 2 файла)

На самом деле думал, что есть метод, с помощью которого можно вызвать функцию из под нужной области видимости

Спасибо
Ответить с цитированием
  #3 (permalink)  
Старый 27.12.2013, 16:51
Аспирант
Отправить личное сообщение для cyklop_77 Посмотреть профиль Найти все сообщения от cyklop_77
 
Регистрация: 01.09.2013
Сообщений: 33

у меня аналогичная проблема, может мне ответит кто?

есть примерно такой код:
function a(){
	var	rrr = 8;
	function aim(arg){
		console.log('aim' + arg);
		console.log(rrr);
	}
};

function b(){
	a.aim('this is argument');
};


вызов a.aim('this is argument'); не работает, консоль выводит сообщение
Цитата:
Uncaught ReferenceError: a is not defined
пробовал вызывать через apply. тоже безуспешно
Ответить с цитированием
  #4 (permalink)  
Старый 28.12.2013, 12:48
Новичок на форуме
Отправить личное сообщение для Shelimov Посмотреть профиль Найти все сообщения от Shelimov
 
Регистрация: 21.12.2013
Сообщений: 9

cyklop_77, консоль все правильно говорит. Вложенная функция не становится свойством функции, внутри которой она определена.

Чтобы ваш код работал надо сделать так:
function a(){
	var	rrr = 8;
	this.aim = function(arg){
		console.log('aim' + arg);
		console.log(rrr);
	}
};

function b(){
	new a().aim('this is argument');
};


Или так:
var a = (function(){
	var	rrr = 8;
	return {
        aim: function(arg) {
            console.log('aim' + arg);
            console.log(rrr);
        }
	}
})();

function b(){
	a.aim('this is argument');
};

Последний раз редактировалось Shelimov, 28.12.2013 в 12:52.
Ответить с цитированием
  #5 (permalink)  
Старый 29.12.2013, 13:48
Аспирант
Отправить личное сообщение для cyklop_77 Посмотреть профиль Найти все сообщения от cyklop_77
 
Регистрация: 01.09.2013
Сообщений: 33

спасибо
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему происходит проверка до вызова самой функции? wwwboy Общие вопросы Javascript 5 09.12.2011 03:37
Вставка элемента в место вызова функции belkir Элементы интерфейса 21 05.08.2011 08:59
Строка вызова функции DMH Общие вопросы Javascript 11 10.08.2010 09:06
Проблемы с style.width в функции HamWay Internet Explorer 2 22.12.2009 12:46
глюк форума Gvozd Сайт Javascript.ru 11 18.03.2009 14:37