execute function by string

¹®ÀÚ¿­·Î ÇÔ¼ö¸¦ ½ÇÇà ½ÃÄÑ º¸ÀÚ.
eval ÇÔ¼ö´Â ¹èÁ¦ ½ÃÅ°°í ¹®ÀÚ¿­·Î ÇÔ¼ö¸¦ ½ÇÇà ÇÏ´Â ¹æ¹ý¿¡ ´ëÇؼ­ ¾Ë¾Æº¸ÀÚ.

function sum(num1, num2) {
    return num1 + num2;
}

function callSum1(num1, num2) {
    return sum.apply(this, arguments);  // arguments °´Ã¼¸¦ ³Ñ±é´Ï´Ù.
    //return eval('sum.apply(this, arguments)');
}
 
function callSum2(num1, num2) { // ¹è¿­À» ³Ñ±é´Ï´Ù.
    return sum.apply(this, [num1, num2]);
}
 
console.log('callSum1 ' + callSum1(10, 10));    // 20
console.log('callSum2 ' + callSum2(10, 10));    // 20
console.log('sum ' + window['sum'](3, 4));

apply³ª call ÇÔ¼ö·Î °¡´É ÇÒ°Í °°¾Æ¼­ ¾Ë¾Æ ºÃÁö¸¸ ¾Æ´Ñ°Í °°´Ù.
´äÀº ÀÇ¿Ü·Î °£´Ü ÇÑ°÷¿¡ ÀÖ¾ú´Ù.

https://code.i-harness.com/ko/q/decd4  ¿¡¼­ ´äÀ» ãÀ»¼ö ÀÖ¾ú´Ù.

Àü¿ª ÇÔ¼ö´Â window['ÇÔ¼ö¸í']À¸·Î ½ÇÇàÀÌ °¡´ÉÇÏ´Ù..

window['sum'](3, 4);

¾Æ·¡ ¿¹Á¦¸¦ º¸ÀÚ.

ÃÖÃÊ func´Â window·Î ÆĽÌÇÏ¿© Calc.add ÇÔ¼ö¸¦ ½ÇÇàÇÏ°í ÀÖ´Ù.

var str = 'Calc.add';
var func = window;
var funcSplit = str.split('.');
for(i = 0;i < funcSplit.length;i++){
     func = func[funcSplit[i]];
}
func(11, 22);

var Calc = (function () {
    function add(p1, p2) {
        return p1 + p2;
    }

    function sub(p1, p2) {
        return p1 - p2;
    }
   
    return {
        add: add,
        sub: sub
    };
})();

console.log('add ' +  Calc.add(8, 2));

var func = window;
func = func['Calc'];
func = func['add'];
console.log('func ' + func(100, 100));

var str = 'Calc.add';
var func = window;
var funcSplit = str.split('.');
for(i = 0;i < funcSplit.length;i++){
   //We maybe can check typeof and break the bucle if typeof != function
   func = func[funcSplit[i]];
}
console.log('parse func ' + func(11, 22));


¾Æ·¡ ¿¹Á¦´Â Áï½Ã½ÇÇà ÇÔ¼ö¸¦ ¹®ÀÚ¿­·Î ½ÇÇàÇÏ°í ÀÖ´Ù.

var Calc = (function () {
    
    var base = 0;   
   
    function add (val){
       base += val;
    }
    function getBase (){
       return base;
    }   
    return {
        add: add,
        getBase: getBase
    };
})();

//Calc['add'](5);
//Calc['add'](10);
//console.log(Calc.getBase());

var func = window;
func = func['Calc'];
func['add'](5);
func['add'](10);
console.log('Calc ' + func['getBase']());

¾Æ·¡ ¿¹Á¦´Â new·Î »ý¼ºÇÑ ¿ÀºêÁ§Æ®¸¦ ¹®ÀÚ¿­·Î ½ÇÇàÇÏ°í ÀÖ´Ù.

function Calculator() {
    
    this.base = 0;   
   
    this.add = function(val){
       this.base += val;
    }
   
    this.getBase = function (){
       return this.base;
    }   
}

var myCalc = new Calculator();
//myCalc.add(5);
//myCalc.add(10);
//console.log(myCalc.getBase());

var func = myCalc;
func['add'](5);
func['add'](10);
console.log('myCalc ' + func.getBase());

Å×½ºÆ® :  execute_function.html

Âü°í)
call function by string
https://code.i-harness.com/ko/q/decd4

ÇÔ¼ö È£Ãâ ¹× 'this'¸¦ À§ÇÑ ¹®¸Æ ÁöÁ¤¿¡ call »ç¿ë
http://blog.weirdx.io/post/3214
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Function/call