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)