Javascript.RU

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

Вызов функции, находящейся в другой функции
Добрый день!

Есть такая функция:

function func1(p1, p2) {
   function func2() {alert(1);}
   func2();
}


Мне нужно вызвать func2 за пределами func1

Как это можно сделать?
Ответить с цитированием
  #2 (permalink)  
Старый 24.08.2010, 15:43
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Никак, очевидно.
Ответить с цитированием
  #3 (permalink)  
Старый 24.08.2010, 16:14
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Очевидно, нужно вызвать func1, потому что она ничего не делает, кроме вызова func2
Ответить с цитированием
  #4 (permalink)  
Старый 24.08.2010, 17:03
Аспирант
Отправить личное сообщение для MikhailGirshberg Посмотреть профиль Найти все сообщения от MikhailGirshberg
 
Регистрация: 27.07.2010
Сообщений: 72

function func1(par1, par2){
function func2(){alert("hi, i'm fired from func2")}
this.f2name = func2;
this.v1=par1
this.v2=par2
}

var f1 = new f1(null, null)
f1.f2name()


в javascript function - это объект. Всё, что описано в функции через ключевое слово this - доступно (аналог public) извне по имени.
Ответить с цитированием
  #5 (permalink)  
Старый 24.08.2010, 17:12
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Сообщение от MikhailGirshberg
Всё, что описано в функции через ключевое слово this - доступно (аналог public) извне по имени.
А this (при вызове как функция, а не конструктор) = window. Вот и загрязняем глобальное пространство имен.
Ответить с цитированием
  #6 (permalink)  
Старый 24.08.2010, 17:13
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от MikhailGirshberg
Всё, что описано в функции через ключевое слово this - доступно (аналог public) извне по имени.
Ну что за чушь.
Ответить с цитированием
  #7 (permalink)  
Старый 24.08.2010, 17:45
Аватар для subzey
Пионэр
Отправить личное сообщение для subzey Посмотреть профиль Найти все сообщения от subzey
 
Регистрация: 16.11.2009
Сообщений: 1,322

Можно использовать arguments.callee.
При этом весь scope func1 останется (см. значение переменной i)
function func1(){
var i = 3;
function func2(){alert("hi, i'm fired from func2\r\ni=" + i)}
arguments.callee.func2 = func2;
}
func1();
i = 42;
func1.func2();
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вызов функции родителя из iFrame bushstas Общие вопросы Javascript 6 13.08.2013 13:43
непонятный вызов функции hedgi Общие вопросы Javascript 2 05.08.2010 10:55
вызов функции из функции sharp_007 Общие вопросы Javascript 2 03.04.2010 20:13
Вызов функции из другой функции.. ?? glutton Общие вопросы Javascript 3 21.08.2009 21:33
вызов функции, из JS генерируемого на сервере subaru AJAX и COMET 1 12.07.2008 12:44