我创建了一个简单的模块模式函数,它返回一个方法对象,在这种情况下,只有一个方法添加一个创建一个具有唯一ID的div,然后将其添加到特定的section元素。 id是从名为cardId的函数中的私有变量创建的。我不理解变量在每个函数调用时是如何重置为1的,而是从函数返回的每个div都有一个唯一的id,这意味着有一个变量与另一个名为cardId的变量相关联。有人可以对此有所了解,还是指出了一些可以做到的事情?
let cardTools= function (){
let cardId=1;
return {
addCard: function(){
let card=document.createElement("div");
let sec=document.getElementsByClassName("memory-cards")[0];//gets a section
card.classList.add("card");
card.id="i";
card.id+=cardId;
cardId+=1;
sec.appendChild(card);
return card;
}
}
}
let tools= cardTools();
let card=tools.addCard(); //id==i1
let card2=tools.addCard(); //id==i2
let card3=tools.addCard(); //id==i3
答案 0 :(得分:0)
首先,我问你一个问题。你确定这段代码有效吗?
我必须执行以下操作才能使其正常工作。
let card1 = cardTools().addCard();
console.log(card1.id);
当我这样做时,我能够在每次通话时看到i1。您在此处发布的代码段给出了语法错误。
更新:
抱歉,我没有正确阅读您的代码。我很确定您的代码正常运行。但是,当我这样做时,每个案例都得到i1
。