繁体   English   中英

创建实例动态javascript

[英]creating instances dynamic javascript

我有一些方法的功能。

function acpwindow(){
   this.gui=function(){
            //some stuff
          }
   this.update=function(){
             //some stuff    
          }

}

现在我想创建该函数的多个实例。

我有一个创建窗口的按钮。 onclick新窗口将触发;

function createwindow(){
     var object1= new acpwindow();
/*
**Here is a problem I have, How to maintain the objects unique.**
*/
}

当用户在windows gui上执行某些操作时,那些发送到服务器然后服务器的请求将响应这些请求。

现在我的另一个问题是如何根据响应更新特定窗口。

我唯一的希望是我将为每个请求生成一个唯一的UUID,并在响应中返回相同的UUID。

我认为如果您创建某种窗口管理器来管理您创建的窗口,则发送和处理请求可能更容易。 就像是:

http://jsfiddle.net/v3T94/1/

在示例中,如果有必要,您可以使用id属性。 否则,如果您在调用sendRequest时跟踪引用,您应该能够在正确的acpwindow上执行您想要的acpwindow

保持这种连接的标准方法是使用闭包

例如,如果你写

function make_timer()
{
    var x = document.createElement("div");
    var count = 0;
    setInterval(function(){
        count += 1;
        x.textContent = count;
    }, 1000);
    return x;
}

每次调用make_timer都会创建一个独立的DOM节点,其中每秒的内容将递增。 但是,定时器回调如何记住哪个节点需要递增? 答案是传递给setInterval确实不是函数而是闭包 ,即函数加上一些变量(在本例中为countx )。

像Java或C ++这样的语言没有这个概念,但是发生的是创建的函数,如果它们来自外部范围,它也会被称为“捕获”局部变量,即使外部它也会使它们“活着”停止它们的函数结束(即当函数make_counter退出时)。

同样可以用于ajax请求。 你通常做的只是将window对象传递给提交请求的函数,回调闭包将用作完成和错误回调。 当答案从服务器返回时,闭包将访问相应的窗口对象。

编辑

如果你真的想使用ID那么当然你可以...在你的例子中它们存储在一个数组中,因此必须遍历数组才能找到确切的ID ...

var windowid=$("#guiid").val();
for (var i=0; i<window_manager.windows.length; i++)
    if (window_manager.windows[i].id == windowid)
        window_manager.windows[i].gui();

使用对象而不是数组会更好,因为在这种情况下,搜索可以简化为单个:

var windowid=$("#guiid").val();
window_manager.windows[windowid].gui();

但请注意,在许多情况下,Javascript中不需要数字ID,因为在那里存储窗口ID,您可以存储窗口对象本身的引用 ,而对于回调,不需要复杂的机制来提供上下文(就像它的因为你有闭包,所以在C ++或Java中是必需的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM