How to get function parameter names/values dynamically?

前端 未结 30 2589
说谎
说谎 2020-11-22 00:13

Is there a way to get the function parameter names of a function dynamically?

Let’s say my function looks like this:

function doSomething(param1, par         


        
30条回答
  •  被撕碎了的回忆
    2020-11-22 00:33

    Here's one way:

    // Utility function to extract arg name-value pairs
    function getArgs(args) {
        var argsObj = {};
    
        var argList = /\(([^)]*)/.exec(args.callee)[1];
        var argCnt = 0;
        var tokens;
        var argRe = /\s*([^,]+)/g;
    
        while (tokens = argRe.exec(argList)) {
            argsObj[tokens[1]] = args[argCnt++];
        }
    
        return argsObj;
    }
    
    // Test subject
    function add(number1, number2) {
        var args = getArgs(arguments);
        console.log(args); // ({ number1: 3, number2: 4 })
    }
    
    // Invoke test subject
    add(3, 4);
    

    Note: This only works on browsers that support arguments.callee.

提交回复
热议问题