Javascript 在函数内部插入新函数…从外部插入

Javascript 在函数内部插入新函数…从外部插入,javascript,scope,nested,Javascript,Scope,Nested,是否可以从外部在函数范围内插入新操作? 例如: function main(){ //I want to insert in here new action to perform } var dosomething = function() { console.log("I want to be inside the main"); } main(); 如何使函数main

是否可以从外部在函数范围内插入新操作? 例如:

       function main(){
           //I want to insert in here new action to perform
       }

       var dosomething = function() { 
             console.log("I want to be inside the main");
       }

       main();
如何使函数main永久执行函数dosomething? 在那之后,我怎样才能从main中取出函数dosomething呢? 这个概念或多或少是这样的:

    function main(){
           //I want to insert in here new actions to perform
    }

    var dosomething = function() { 
             console.log("I want to be inside the main");
    }


   *insert dosomething in main*

   //This is how it should look now the function main:
   function main(){
          dosomething();
   }


   *erase dosomething from main*

   //The function main come back to be empty:
   function main(){
   }
我找到的唯一解决方案是让函数main执行数组中的所有函数,并使用此数组从外部插入/取出函数。有没有更好的解决办法

如何使函数main永久执行函数dosomething

你可以像这样装饰它

var oldmain = main;
main = function() {
    doSomething();
    return oldmain.apply(this, arguments);
}
在那之后,我怎样才能从main中取出函数dosomething呢

不,你不能。函数在这方面是不可变的对象,不能分解。你唯一能做的就是再拿一次奥尔德曼

我想使用此技术简单地在循环中添加和删除动画:

function main(){ window.requestAnimationFrame(main); }
我找到的唯一解决方案是让函数main执行数组中的所有函数,并使用此数组从外部插入/取出函数


对于动态大小的动画,这是一个完美的解决方案。这没什么问题。

我怀疑这就是X/Y问题:你需要解决X,你认为Y在现有函数中插入和删除功能是解决问题的方法,但更有可能的是X有更好的解决方案。也许看看@Crowder:我不知道,基本上,我想使用这种技术简单地在这个循环中添加和删除动画:函数main{window.requestAnimationFramemain;}@TTK:因此,数组是完全合法的解决方案。