Inspect the names/values of arguments in the definition/execution of a JavaScript function

后端 未结 5 1218
北海茫月
北海茫月 2020-11-30 11:03

I\'m looking to do the equivalent of Python\'s inspect.getargspec() in Javascript.

I do know that you can get the arguments list from a Jav

5条回答
  •  鱼传尺愫
    2020-11-30 11:34

    Sightly improved version of Jonathan Fingland's answer:

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

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

    (Also posted at How to get function parameter names/values dynamically from javascript)

提交回复
热议问题