首页 > 解决方案 > 如何重新定义关于闭包的 JS 函数?

问题描述

我尝试重新定义 Class.method,它使用闭包中的函数。我目前提供的修改版本不起作用,因为它使用了不能从全局命名空间直接访问的 e() 函数。有没有办法在不编辑其他任何内容的情况下使修改后的版本工作?

function() {
    function e(a, b, c) {
    // e body
    }
    Class.method = function(a, b, c, d) {
        // method body
        return new e(a, b, c)
    }
}

//Modified version (Not working)
Class.method = function(a, b, c, d) {
            // method body
        alert("I'm modified!");
        return new e(a, b, c)
    }

标签: javascriptfunctionecmascript-6closures

解决方案


您当前的代码没有任何办法 - 函数是函数范围的,因此e无法在匿名函数之外访问。您需要将修改后的方法移到匿名函数内(并命名函数以便可以调用它)或移到e函数外。


推荐阅读