错误的函数改变了它被调用的变量引用?

And*_*rew 5 html javascript

JavaScript拥有各种疯狂的灵活性.我决定利用它并在第一次调用时自行更改功能.这是一件坏事吗?它的工作原理如下:

(function(){
   var nextAfter = function(){};
   Something.prototype.next = function(){
      //do pre-start actions.
      this.next = nextAfter;
   };
})();
Run Code Online (Sandbox Code Playgroud)

此函数在主循环内部调用,因此它被多次调用,但实例只是"假设"实例化一次.

Sor*_*ren 6

这是完全合理的事情.

例如,它可以是在状态机中实现状态更改的有用方法,但我确信您可以找到许多其他用途.

您可能还想了解如何使用闭包实现相同的功能 - 根据用例,它可能更干净.

编辑; 没有改变原型的闭包的例子

Something = (function(){
    var next = function() { next = nextAfter; console.log("A"); }
    var nextAfter = function() { console.log("B"); }

    return {
        next: function(){ next(); }
    }
})();
Run Code Online (Sandbox Code Playgroud)

闭包的好处是你不会改变该对象类型的全局原型函数,现在你可以有多个独立的对象,每个闭包对象可以保持自己的状态.