首页 > 解决方案 > 在 JavaScript 中,有没有办法获取闭包参数

问题描述

我有两个文件:

//------------a.js--------------

function a(){
  return '1'
}

var testCase = {
  func(){
    return a()
  }
}

module.exports = testCase

//------------b.js--------------

var testCase = require('./a.js')

//Can I get closure parameters(function a) that not modify a.js?

有没有办法在 JavaScript 中获取闭包参数?谢谢你!

标签: javascriptcompilationclosures

解决方案


如果您的意思是从函数 walk() {} 中的闭包 run(x, y) {} 之类的闭包中返回参数列表,那么下面的代码可能会有所帮助。

    function walk() {
        function run(x, y) {
            return x + y;
        }

        return run;
    }

    var fun = walk();

    fun.getParameters = function () {
        var functionText = this.prototype.constructor.toString();

        return functionText
            .substring(functionText.indexOf('(') + 1, functionText.indexOf(')'))
            .split(',')
            .map(x => x.trim());
    };

    console.log(fun.getParameters());

推荐阅读