User Tools

Site Tools


java-script:dynamic-function-invocation

This is an old revision of the document!


Dynamic Function Invocation

The object[method](…) syntax is a common pattern in JavaScript that allows you to dynamically call a method on an object using a variable for the method name.

This pattern can be useful in various scenarios where you need to call different methods based on conditions or user input, or when you want to create higher-order functions that can operate on different methods.

General explanation

object: This represents any object that has methods.
method: This is a string containing the name of the method you want to call on the object. It can be a variable or a literal string.
object[method]: This accesses the method on the object with the name specified by the method string.
object[method](…): This calls the accessed method, and you can pass any arguments that the method expects.

Examples

const obj = {
  greet: function(name) {
    console.log(`Hello, ${name}!`);
  }
};
 
const methodName = 'greet';
obj[methodName]('John'); // Output: Hello, John!
const mathOperations = {
  add: (x, y) => x + y,
  subtract: (x, y) => x - y,
  multiply: (x, y) => x * y,
  divide: (x, y) => x / y
};
 
function calculate(operationName, a, b) {
  const operation = mathOperations[operationName];
 
  if (typeof operation === 'function') {
    return operation(a, b);
  } else {
    throw new Error(`Unknown operation: ${operationName}`);
  }
}
 
console.log(calculate('add', 5, 3));      // Output: 8
console.log(calculate('subtract', 10, 4)); // Output: 6
console.log(calculate('multiply', 2, 3));  // Output: 6
console.log(calculate('divide', 9, 3));    // Output: 3

Here, calculate is a function that takes the name of a mathematical operation and two operands. It looks up the corresponding function in the mathOperations object and invokes it. If the operation name is not found, it throws an error. This approach allows you to add new operations easily without modifying the calculate function.

java-script/dynamic-function-invocation.1691671517.txt.gz · Last modified: 2023/08/10 15:45 by odefta