我尝试重新定义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)
}
答案 0 :(得分:1)
对于您当前的代码,无论如何-函数是函数作用域的,因此e
在匿名函数之外是不可访问的。您需要将修改后的方法移至匿名函数内(并命名该函数以便可以调用它),或者将e
移至该函数之外。