javascript worker适用于多个页面元素

时间:2012-10-18 01:57:18

标签: javascript shared-libraries

假设我有一个javascript库(.js文件),它可以在页面上的div元素上绘制SVG图形。该库应用业务逻辑,并在单击元素时创建事件处理程序等。伪代码可能如下所示:

myLib = {};
myLib.dummy = null;
mylib.doStuff = function(divID) {
  //divID is the ID of the element on which SVG graph will be drawn
  //does graph drawing and sets up myLib.dummy for feedback or such, e.g.:
  myLib.dummy = $("#divID").width();
}

我的问题是:我如何处理我想将此脚本应用于同一页面上的2个(或更多)元素的情况,然后将myLib的单独“实例”与每个元素分开。我知道我不能从页面上这样称呼它:

myLib.doStuff('topDiv');   //myLib.dummy will be say 400;
myLib.doStuff('bottomDiv');   //myLib.dummy will be say 600;

使用上面的代码,我将无法访问与ID ='topDiv'的div相关的myLib.dummy,因为它们使用相同的命名空间。

我怀疑我错过了设计模式,或者答案可能仅仅是命名空间的情况。

我将不胜感激任何建议或帮助。

1 个答案:

答案 0 :(得分:2)

function makeALib() {
    var myLib = {};
    myLib.dummy = null;
    mylib.doStuff = function(divID) {
      //divID is the ID of the element on which SVG graph will be drawn
      //does graph drawing and sets up myLib.dummy for feedback or such, e.g.:
      myLib.dummy = $("#divID").width();
    }
    return myLib;
}

var libA = makeALib();
var libB = makeALib();

libA.doStuff('topDiv'); 
libB.doStuff('bottomDiv'); 

您可以在许多不同的领域介绍分离或间接。如果不了解您的使用情况,很难说什么是一个不错的选择。但上述是众多工作选择之一。