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

时间:2015-07-08 18:39:31

标签: javascript html

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

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

这个函数在一个主循环内部被调用,所以它被多次调用,但实例只是#34;假设"要实例化一次。

1 个答案:

答案 0 :(得分:6)

这是完全合理的事情。

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

您可能还想了解如何使用闭包实现相同的功能 - 根据使用情况,它可能更清晰。

编辑; 不会更改原型的闭包示例

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

    return {
        next: function(){ next(); }
    }
})();

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