Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   как завернуть несколько функций в одну (https://javascript.ru/forum/misc/31788-kak-zavernut-neskolko-funkcijj-v-odnu.html)

syegorius 20.09.2012 20:51

как завернуть несколько функций в одну
 
доброе время суток

подскажите как быть в таком случае - есть вот такой кусок кода:

var a=1,b=2,c=3

function d(){
    return e(a,20)
}

function e(f,g){
    return f*g
}

function e(f,g){
    return f+g
}


как вы заметили есть две ф-ции e()...
как мне завернуть ф-цию d() и первую e(f,g) так, что бы ф-ция d() вызывала именно первую ф-цию e(f,g), а не вторую, причем я сейчас показал вам пример, в реале у меня больше сотни ф-ций и вот такой метод:

function mainFunc(){
    var a=1,b=2,c=3

    function d(){
        return this.e(a,20)
    }

    function e(f,g){
        return f*g
    }
}

function e(f,g){
    return f+g
}


не совсем подходит, так как у меня руки отпадут ставить this, да и не факт, что я где-то что-то упущу и тогда все вообще накроется медным тазом

заранее спасибо за помощь

BallsShaped 20.09.2012 22:10

Сделай так:
var mainFunc = {
    a:1,b:2,c:3,

    d: function (){
        return e(this.a,20)
    },

    e: function (f,g){
        return f*g
    }
};
 
function e(f,g){
    return f+g
}

Aetae 21.09.2012 00:41

ЭЭ, а нахрена что-то заменять?
function mainFunc(){
    var a=1,b=2,c=3
 
    function d(){
        return e(a,20)
    }
 
    function e(f,g){
        return f*g
    }

alert( d() )
}
 
function e(f,g){
    return f+g
}

mainFunc()



И можно даже так:
var a=1,b=2,c=3

var d = function(){
    function d(){
        return e(a,20)
    }
     function e(f,g){
        return f*g
    }
    return d
}();
 
function e(f,g){
    return f+g
}

alert( d() )
a = 2;
alert( d() )

oneguy 21.09.2012 01:25

Если функция e используется только внутри функции d, то функцию e можно определить там:
var a=1,b=2,c=3

function d(){
    function e(f,g){
        return f*g
    }

    return e(a,20)
}

function e(f,g){
    return f+g
}


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