// 1. 正常的js 创建dom? // let boxContent = document.createElement("div"); // 2. 正常的js 放入dom? // 父.appendChild(子); // 用 对象 去表达dom // let o = { // el: "div", // id: "app", // innerText: "", // style: {}, // elChildren: [] // } class DOMClass { constructor(DOMObj, root) { if (DOMObj) { this.d = this.createDOM(DOMObj, root); } } // 创建dom createDOM = (DOMObj, root) => { // 创建的 dom let cDOM = document.createElement(DOMObj.el); // 赋予属性 for (const key in DOMObj) { cDOM[key] = DOMObj[key]; } // 赋予样式 for (const key in DOMObj.style) { cDOM.style[key] = DOMObj.style[key]; } // 递归 // 如果该盒子存在子盒子(多个或一个) 即创建子盒子 并丢进去 DOMObj.elChildren && DOMObj.elChildren.forEach(element => { // 将 孩子 挨个传入 生成dom 并丢到 父盒子中 this.createDOM(element, cDOM); }); // 如果给容器 就帮你放入 if (root) { root.appendChild(cDOM); } return cDOM; } }