javascript - 如何重新定义关于闭包的 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)
}
解决方案
您当前的代码没有任何办法 - 函数是函数范围的,因此e
无法在匿名函数之外访问。您需要将修改后的方法移到匿名函数内(并命名函数以便可以调用它)或移到e
函数外。
推荐阅读
- cocoalumberjack - 将 cocoalumberjack 更新到 3.6.0 后获取“在框架模块中包含非模块化标头”
- google-apps-script - 如何为 onEdit (e) 函数设置更近的范围?
- typescript - js if else loop 怎么能用 ts 缩短技术写
- react-native - 在渲染中使用 Stack navigator 从 app.js 导航
- python - 如何在 Keras 中的预训练 InceptionResNetV2 模型的不同层中找到激活的形状 - Tensorflow 2.0
- html - Safari 从页面加载完整的 html5 视频,并且在加载完成之前不允许使用它
- logging - Kotlin Basics:打印相同的字符串两次以上
- python - 如何使用 Dlib 性别/年龄模型?“.dat 文件”
- android - 测试接口库
- django - int() 参数必须是字符串、类似字节的对象或数字,而不是“ForeignKey”