Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Функция в функции (https://javascript.ru/forum/misc/42708-funkciya-v-funkcii.html)

Vladjiss 06.11.2013 16:34

Функция в функции
 
window.onload = function(){
var x = new func1('k')
здесь нужно вызвать функцию func2 () // появится сообщение alert('k')
}
function func1(e) {
	var Myvar = e;
	function func2 (){
		alert(Myvar)
	}
}

BETEPAH 06.11.2013 16:51

var x = new func1('k');
x.func2(); // появится сообщение alert('k')
var y = new func1('l');
y.func2(); // появится сообщение alert('l')

function func1(e) {
	return {
		func2 : function(){
			alert(e);
		}
	}
}

Vladjiss 06.11.2013 17:30

А если мне нужно функцию func2() вызвать внутри функции func1(), а так она не вызывается.
Пробовал так - не работает

var x = new func1('k');
//x.func2(); 

 
function func1(e) {
	function func2(){
            alert(e);
    } 
	
    return {
        func2 : func2()
        }
}

Faab 06.11.2013 17:39

Объясните мне кто нибудь что значит приведённая строка внизу, учитывая что func2() это alert(e)
return { func2 : func2() }

Vladjiss 06.11.2013 17:39

Кажется разобрался:
var x = new func1('k');
//x.func2();

function func1(e) {
    function func2(){
            alert(e);
    }
    return {
        func2 : func2
    }
}

Faab 06.11.2013 17:43

Хорошо, что значит тогда это:

return { func2 : func2 }


Какого результата вы добиваетесь этим? Я реально не в теме.

Vladjiss 06.11.2013 17:47

с помощью функции x.func2(); я могу вызвать функцию func2();, находящуюся в функции func1(), независимо от её расположения.
Хотя я честно говоря сам не понимаю, как это работает: 'return { func2 : func2 }'

Vladjiss 06.11.2013 17:47

//(расположения x.func2();)

Faab 06.11.2013 17:51

Ну я понимаю, что вы просто экспериментируете. А если просто поставить return, вы вызвать внутреннюю функцию не сможете?

var x = new func1('k');
//x.func2();
//x.func3();
//x.func4();


function func1(e) {
    function func2(){
            alert("func2" + e);
    }
    function func3(){
            alert("func3" + e);
    }
    function func4(){
            alert("func4" +e);
    }
    return;
}

Vladjiss 06.11.2013 18:02

ну а если мне нужно, скажем, вызвать только одну из этих функций


Часовой пояс GMT +3, время: 08:58.