可以多次实例化对象文字吗?

时间:2011-11-22 18:16:27

标签: php javascript

我正在使用javascript编写一个使用对象文字而不是构造函数的任务应用程序。

用户点击页面上的特定元素,表单接收键入的“命令”。然后,系统会提示用户输入命令的参数。

这一切都是第一次有效。但是,如果用户单击页面上的另一个元素并输入命令,则脚本运行TWICE!似乎对象文字堆积起来。

这可能吗?

修改 我发现从任何事件处理程序解绑表单都使用jQuery的.unbind()来解决问题。我想我对文字的理解比我想象的要差。我不明白表格最初是如何与文字绑定的。

我没有发布代码,因为我不认为复杂的应用程序流会帮助解决这个问题。也就是说,问题不在于我的代码......而在javascript中如何存在对象文字。我正在使用它们,因为我认为只创建了一个实例。可以创建多个文字副本吗?

用户点击页面上的元素。这可以是组名,主题名称或任务名称。然后他们在页面底部的表单输入中输入一个命令。 提交该表单时会发生一些事情:我的command对象允许received属性并运行方法delegate()

//handle command line submission
$(command.form).submit(function(event){
event.preventDefault();
command.received = $(command.line).val();
command.delegate();//sends the command to the appropriate taxonomy method
});

command.delegate()检查表单输入中的命令是否是允许的预定义命令之一,然后从三个对象文字中的一个调用方法receive_command(),这表示用户是否单击了该元素是一个小组,主题或术语。

/*  engage the taxonomy object defined by selected item
    */
    delegate : function(){
        if(command.validates()){
            if(this.taxonomy == 'group'){group.receive_command();}
            if(this.taxonomy == 'topic'){topic.receive_command();}
            if(this.taxonomy == 'task'){task.receive_command();}
        }
    }

主题对象文字的receive_command()函数获取命令对象文字的属性,并根据两部分命令周期的哪一部分是最新的来确定运行哪个方法(第1部分显示提示,第2部分)验证并运行命令。)

/*  command object sends retrieved commands to this function for constructive processing
*/
receive_command:function(){
    //read command name, call matching method
    //route command to second stage if set else to prompt method of called action if not

    if(topic.current_op){
        topic[topic.current_op].validate();
    }
    else{
        if(command.received.length > 1){
        topic.current_op = command.received;
        }
        else{
        topic.current_op = topic.aliases[command.received];
        }
        topic[topic.current_op].prompt();
    }
},

当用户单击第一个元素时,提示,然后验证并运行该命令一次。如果没有页面重新加载,当用户再次单击另一个主题或同一主题并添加另一个任务时,会在不提示命令周期的第2阶段的情况下添加空白任务。当跟踪alert() s放置在代码中的点时,似乎提交表单会重新运行以前的命令以及当前命令。结果是将空任务添加到列表中,因为第一阶段命令以按下回车键结束,命令表单中没有值,代码读取该值作为要插入数据库的空任务。

这些信息很复杂且过于复杂,但我的问题仍然存在,多个对象文字如何多次实例化?

0 个答案:

没有答案