在DOM元素创建场景中,Object.assign()是否优于变量声明方式?
DOM元素创建:变量声明 vs Object.assign()
我正在学习JavaScript,刚接触DOM相关内容。一开始觉得通过变量声明创建元素的写法过于繁琐,后来了解到Object.assign()方法。经过思考和测试,有以下想法,但作为新手希望确认是否有遗漏:
变量声明创建节点的局限
- 通过变量声明创建节点时,若要创建同HTML标签的新节点,必须声明新变量,因为复用同一变量调用
append()或appendChild()时,只会移动节点而非创建新节点。
示例代码:
const p = document.createElement("p") p.textContent = "<p> Text </p>" document.body.appendChild(p) const p1 = document.createElement("p") p1.id = "p1" p1.textContent = `<p id="p1">P1 Text</p>` document.body.appendChild(p1) const paragraph = document.createElement("p") paragraph.className = "paragraph" paragraph.textContent = `<p class="paragraph">Paragraph Text</p>` document.body.appendChild(paragraph) document.body.appendChild(p)
目前Node.cloneNode()无法解决该问题,因为它会生成带有相同属性(如ID)的新元素,造成混乱。
Object.assign()创建节点的优势
- 使用
Object.assign()函数创建节点时,无需为其声明变量,也无需为同HTML标签的其他节点创建新变量,因为每次都是从头创建对象。这让我可以自由设置新属性,无需担心破坏已完成的内容。
示例代码:
document.body.appendChild( Object.assign( document.createElement("p"), {textContent: `<p>Text<p>`})) document.body.appendChild( Object.assign( document.createElement("p"), {id: "p1"}, {textContent: '<p id="p1">Text</p>'})) document.body.appendChild( Object.assign( document.createElement("p"), {className: "paragraph"}, {textContent: `<p class="paragraph">Text</p>`})) document.body.appendChild( Object.assign( document.createElement("p"), {textContent: `new <p>Text<p>`}))
想请教:在DOM元素创建中,Object.assign()是否确实比变量声明方式更优?
内容的提问来源于stack exchange,提问作者Maicon Rodrigues dos Santos
相关产品推荐
相关产品推荐

