在javascript中删除类依赖项

时间:2011-02-14 09:20:06

标签: javascript design-patterns

我有一个创建自定义选择框的类。它的工作正常,我希望这个类更通用。 这些Selectbox还具有“onchange”事件监听器。

现在在调用onchange方法之前,我想进行一些复杂的测试。这些测试在另一个类中定义。

要实现通用性,我不希望我必须在SelectBox类中初始化新类。 什么应该是解决这个问题的最佳途径?执行测试所需的数据在SelectBox类中。

由于

1 个答案:

答案 0 :(得分:0)

那么,如果这些函数不依赖于新的初始化对象特定变量,那么你可以将这些函数变成公共静态函数

var AnotherClass = (function(){
  // this is a public static method
  this.complexTask = function(){ alert('I am too complex for my shirt'); }

  return function(){
    // initialization-dependent-stuff
  }
})();

var SelectBoxes = (function(){
   return function(){
      this.onChange = function(){
         AnotherClass.complexTask();
      }
   }
});
通过这样做,你不必初始化任何东西,而且你可以按照你想要的方式使用你的功能。

或者,如果您不能使用公共静态方法,那么您应该考虑将该类的实例作为参数传递,尽管上面的方法是优先的