use*_*631 2 javascript javascript-objects
我想在 foreach 循环中创建对象:
我从这个开始:
data.forEach(function (el) {
var dynamic_var = new Quill(el['editor']);
dynamic_var.on('text-change', logHtmlContent);})
Run Code Online (Sandbox Code Playgroud)
但是,dynamic_var 被“覆盖”了,我想保持独特。
我检查了一些 html 元素,对于我发现的每个元素,我想创建一个新对象,并执行对象方法。
在我的情况下,变量每次迭代都会得到一个新对象,不是新变量。
这就是你要找的吗?
var quillValueContainer = {};
// ...
data.forEach(function(el) {
quillValueContainer[el] = new Quill(el['editor']);
quillValueContainer[el].on('text-change', logHtmlContent);
});
Run Code Online (Sandbox Code Playgroud)
这仅适用el于字符串或数字。看看你是如何使用它的:el['editor'],让我觉得它是一个Object,在这种情况下,你可以使用元素的索引。
var quillValueContainer = {}; // [] should also work for indexes
// ...
data.forEach(function(el, index) {
quillValueContainer[index] = new Quill(el['editor']);
quillValueContainer[index].on('text-change', logHtmlContent);
});
Run Code Online (Sandbox Code Playgroud)
另外,我不知道这是否是您需要做的事情,但是您可以通过执行以下操作来检查Quill对象是否已初始化并跳过重复项(如果已初始化):
data.filter(function(el, index){ return !quillValueContainer[index]; }).foreach(...
Run Code Online (Sandbox Code Playgroud)
或者
data.forEach(function(el, index) {
if(quillValueContainer[index]) return;
quillValueContainer[index] = new Quill(el['editor']);
quillValueContainer[index].on('text-change', logHtmlContent);
});
Run Code Online (Sandbox Code Playgroud)