JavaScript - 有没有办法动态创建对象的新实例
JavaScript - Is there any way to dynamically create a new instance of a object?
我正在做一个小项目,我需要用表单字段数据创建对象。简而言之,我有一个构造函数,可以从每个表单字段中检索值,如下所示:
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();
});
这在创建对象时起作用,但每次按下按钮时对象都会被覆盖。我需要在每次按下按钮时创建对象的新实例。
这可能吗?如果不是,是否有更可行的构造函数替代方案?非常感谢。
你在 enventlistener 中定义那个 newTask 变量,然后立即将新任务分配给它。你的代码正在做你告诉它做的所有事情。也就是说,创建一个新变量并为其分配一个新的任务实例。函数结束后,newTask 将被销毁,因为没有事可做,并且代码中的其他任何地方都无法访问它。
你为什么不试试这个:
var submitBtn = document.getElementById('#someID');
var myTasks = [];
submitBtn.addEventListener('click', function(event) {
event.preventDefault();
myTasks.push(new Task());
});
这是因为您总是将值放在同一个 var 中,您需要用您的对象创建一个数组,这样您就不会丢失旧对象
var submitBtn = document.getElementById('#someID');
var newTask = [];
submitBtn.addEventListener('click', function(event) {
event.preventDefault();
newTask.push(new Task());
});
相关文章:
- 显示模块模式在Knockout中设置模型的新实例
- 如何基于数组值创建新实例
- VS2010 javascript调试器希望在VS2010的新实例中启动
- 将新类实例中的数据存储在数组中
- Web服务器意外退出,正在重新启动新实例
- JavaScript - 有没有办法动态创建对象的新实例
- Jquery类选择器无法选择用.append()添加的新类实例
- 创建新日期实例时的奇怪行为
- 我应该在原型上还是在新创建的实例上调用构造函数方法
- CKEditor新实例始终处于卸载状态
- Javascript - 如何创建新的函数实例
- JavaScript中Var类型的新实例
- jQueryFileTree如何清除实例、重新实例化新实例或刷新
- angular.injector在每次调用时返回新的服务实例
- 每次使用角度控制器都会创建一个新的if实例
- 使用模块模式时,如何创建对象的新实例
- 使用动态函数名编写Javascript新对象实例
- Reset All按钮从JS literal添加一个新的实例jQuery
- 当一次将事件绑定到多个元素时,每个元素都有新的实例
- Angular 2 RC5的组件级提供商每次都会获得新的实例