好的,考虑到我不想修改的以下Javascript
代码:
(function () {
function iWantToCallThis(){
// Do some stuff
}
window.SomeObject = {
theirfunc = function(){
// Do some stuff
},
otherFuncIDontWantToCall = function(){
// This works, but don't want to call this function.
iWantToCallThis();
// does other stuff
}
}
}());
如何通过SomeObject的范围访问iWantToCallThis()
,如下所示:
window.SomeObject.theirfunc = (function (func){
iWantToCallThis();
func.apply(this, arguments);
} (win.SomeObject.theirfunc));
即使我认为该功能在技术上运行在其原始范围内,我也无法访问iWantToCallThis()
。有没有办法在不编辑原始源代码的情况下访问该功能?
谢谢!
答案 0 :(得分:1)
简短的回答是,你不能。
答案很长,如果你改变主意不改变代码,然后返回iWantToCallThis
,你最终可能会关闭。如果你做了很多,你可能会遇到性能问题。
答案 1 :(得分:1)
答案 2 :(得分:0)
不,因为iWantToCallThis
既没有从IIFE返回,也没有像SomeObject那样存储在公共名称空间/变量中,而且它们的函数是。
如果当然,你可以做的,就像你在第二个区块中开始做的那样,是手动重现该功能的内容并重新声明它。虽然由于它的范围,它无法自动获取函数的内容。