如何重新定义关于闭包的JS函数?

时间:2019-06-19 21:10:56

标签: javascript function ecmascript-6 closures

我尝试重新定义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)
    }

1 个答案:

答案 0 :(得分:1)

对于您当前的代码,无论如何-函数是函数作用域的,因此e在匿名函数之外是不可访问的。您需要将修改后的方法移至匿名函数内(并命名该函数以便可以调用它),或者将e移至该函数之外。