¹®ÀÚ¿·Î ÇÔ¼ö¸¦ ½ÇÇà ½ÃÄÑ º¸ÀÚ. 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 |