JavaScript - 有没有办法动态创建对象的新实例?

时间:2016-04-28 14:18:28

标签: javascript javascript-objects

我正在开发一个小项目,我需要使用表单字段数据创建对象。简而言之,我有一个构造函数,它从每个表单字段中检索值,如下所示:

var Task = function() {
  this.title = document.getElementById("task-title").value;
  this.date = document.getElementById("task-date").value;
  this.option = document.getElementById("task-option").value;
}

我需要的是每次有人点击提交按钮时创建一个新的对象实例。到目前为止我所拥有的是:

var submitBtn = document.getElementById('#someID');
submitBtn.addEventListener('click', function(event) {
   event.preventDefault();
   var newTask = new Task();           
});

这可以创建一个对象,但每次按下按钮时都会覆盖对象。每次按下按钮时,我都需要创建一个新对象实例。

这可能吗?如果没有,那么构造函数是否更可行?非常感谢你。

2 个答案:

答案 0 :(得分:1)

那是因为你总是将值放在同一个var中,你需要用你的对象创建一个数组,这样你就不会丢失旧对象

var submitBtn = document.getElementById('#someID');
var newTask = [];
submitBtn.addEventListener('click', function(event) {
   event.preventDefault();
   newTask.push(new Task());           
});

答案 1 :(得分:1)

您在enventlistener中定义了newTask变量,然后立即将新任务分配给它。你的代码正在做你告诉它要做的一切。即,创建一个新变量并为其分配一个新的任务实例。函数结束后,newTask被销毁,因为无处可执行,你的代码中没有其他地方可以到达它。

为什么不尝试这个:

var submitBtn = document.getElementById('#someID');
var myTasks = [];
submitBtn.addEventListener('click', function(event) {
  event.preventDefault();
  myTasks.push(new Task());           
});