DEV Community

Asad Anik
Asad Anik

Posted on

JavaScript Functions Deep Dive

A function can also create with new keyword. And a function can assigning with multiple ways. And It’s called the Function Constructor. Function this is our function Constructor.

⇒ Simple Function..

// Function define & defination.. function strToObj(str){ let obj = new Object(); for (let s of str){ if (s !== ''){ obj[s] = s; } } return obj; } // Invoking function with calling.. console.log(strToObj("Asad Anik")); 
Enter fullscreen mode Exit fullscreen mode

⇒ Construct a function. This mode is awesome to working and declaring function inside the Runtime😎. And the Runtime makes it the normal function as well. This also known as Runtime Function.

→ Similar function with new keyword like creating an Object or calling Class’s Constructor method.

→ Syntax ⇒ new Function(Arguments, Body);

// Actual function in JavaScript Behid the scense.. const strToObj = new Function( 'str', `let obj = new Object(); for (let s of str){ if (s !== ''){ obj[s] = s } } return obj;` ); console.log(strToObj("Asad Anik")); 
Enter fullscreen mode Exit fullscreen mode

→ With multiple params.

⇒ Syntax — new Function(Argument1, Argument2, ….., Body);

// Multiple arguments.. const mySum = new Function( 'a', 'b', ` const sum = a + b; console.log(sum); ` ); // Calling & Invoking.. mySum(20, 10); 
Enter fullscreen mode Exit fullscreen mode

→ Also can code like this way.

// Take all data of function into an object. const fData = { params: ['num1', 'num2'], body: ['const sum = num1 + num2', 'return sum'] }; // Bring body array to string body.. const fBody = fData.body.reduce((acc, cur) => { acc += cur + ';'; return acc; }, ''); // Calling Function Constructor.. const myOwnFunc = new Function(...fData.params, fBody); console.log(myOwnFunc(20, 10)); 
Enter fullscreen mode Exit fullscreen mode

Multiple Operations Constructor Function.

// Mutiple Operations Constructor Function.. const Operations = [ { args: [10, 20], params: ['num1', 'num2'], body: `console.log("Operation 1:", num1 + num2)` }, { args: [10, 20], params: ['num1', 'num2'], body: `console.log("Operation 2:", num1 - num2)` }, { args: [10, 20], params: ['num1', 'num2'], body: `console.log("Operation 3:", num1 * num2)` }, { args: [10, 20], params: ['num1', 'num2'], body: `console.log("Operation 4:", num1 / num2)` }, ]; // Calling Stack.. Operations.forEach((operation) => { const fn = new Function(...operation.params, operation.body); fn(...operation.args); }); 
Enter fullscreen mode Exit fullscreen mode

Top comments (0)