diff --git a/node_modules/min-document/document.js b/node_modules/min-document/document.js index d929cbd..c4ea4ea 100644 --- a/node_modules/min-document/document.js +++ b/node_modules/min-document/document.js @@ -1,72 +1,95 @@ -var domWalk = require("dom-walk") +// 引入所需的模块 +var domWalk = require("dom-walk"); -var Comment = require("./dom-comment.js") -var DOMText = require("./dom-text.js") -var DOMElement = require("./dom-element.js") -var DocumentFragment = require("./dom-fragment.js") -var Event = require("./event.js") -var dispatchEvent = require("./event/dispatch-event.js") -var addEventListener = require("./event/add-event-listener.js") -var removeEventListener = require("./event/remove-event-listener.js") +var Comment = require("./dom-comment.js"); // 用于创建注释节点 +var DOMText = require("./dom-text.js"); // 用于创建文本节点 +var DOMElement = require("./dom-element.js"); // 用于创建元素节点 +var DocumentFragment = require("./dom-fragment.js"); // 用于创建文档片段 +var Event = require("./event.js"); // 用于创建事件 +var dispatchEvent = require("./event/dispatch-event.js"); // 用于派发事件 +var addEventListener = require("./event/add-event-listener.js"); // 用于添加事件监听器 +var removeEventListener = require("./event/remove-event-listener.js"); // 用于移除事件监听器 +// 模块导出一个 Document 构造函数 module.exports = Document; +// Document 构造函数 function Document() { + // 确保通过构造函数来创建实例 if (!(this instanceof Document)) { return new Document(); } - this.head = this.createElement("head") - this.body = this.createElement("body") - this.documentElement = this.createElement("html") - this.documentElement.appendChild(this.head) - this.documentElement.appendChild(this.body) - this.childNodes = [this.documentElement] - this.nodeType = 9 + // 创建 head, body 和 html 元素,并构建文档结构 + this.head = this.createElement("head"); + this.body = this.createElement("body"); + this.documentElement = this.createElement("html"); + + // 将 head 和 body 添加到 html 元素中 + this.documentElement.appendChild(this.head); + this.documentElement.appendChild(this.body); + + // childNodes 是一个包含文档根元素的数组 + this.childNodes = [this.documentElement]; + + // 定义 nodeType 属性为 9(表示文档节点) + this.nodeType = 9; } +// 定义 Document 原型对象,包含文档对象的各种方法 var proto = Document.prototype; + +// 创建文本节点 proto.createTextNode = function createTextNode(value) { - return new DOMText(value, this) -} + return new DOMText(value, this); +}; +// 创建命名空间元素 proto.createElementNS = function createElementNS(namespace, tagName) { - var ns = namespace === null ? null : String(namespace) - return new DOMElement(tagName, this, ns) -} + var ns = namespace === null ? null : String(namespace); + return new DOMElement(tagName, this, ns); +}; +// 创建元素节点 proto.createElement = function createElement(tagName) { - return new DOMElement(tagName, this) -} + return new DOMElement(tagName, this); +}; +// 创建文档片段 proto.createDocumentFragment = function createDocumentFragment() { - return new DocumentFragment(this) -} + return new DocumentFragment(this); +}; +// 创建事件对象 proto.createEvent = function createEvent(family) { - return new Event(family) -} + return new Event(family); +}; +// 创建注释节点 proto.createComment = function createComment(data) { - return new Comment(data, this) -} + return new Comment(data, this); +}; +// 通过 ID 获取元素 proto.getElementById = function getElementById(id) { - id = String(id) + id = String(id); // 确保 ID 是字符串 + // 使用 domWalk 遍历文档的所有节点,找到匹配的节点 var result = domWalk(this.childNodes, function (node) { if (String(node.id) === id) { - return node + return node; // 找到匹配的节点后返回 } - }) + }); - return result || null -} + return result || null; // 如果没有找到则返回 null +}; -proto.getElementsByClassName = DOMElement.prototype.getElementsByClassName -proto.getElementsByTagName = DOMElement.prototype.getElementsByTagName -proto.contains = DOMElement.prototype.contains +// 引用 DOMElement 中的方法 +proto.getElementsByClassName = DOMElement.prototype.getElementsByClassName; +proto.getElementsByTagName = DOMElement.prototype.getElementsByTagName; +proto.contains = DOMElement.prototype.contains; -proto.removeEventListener = removeEventListener -proto.addEventListener = addEventListener -proto.dispatchEvent = dispatchEvent +// 引入事件监听相关的方法 +proto.removeEventListener = removeEventListener; +proto.addEventListener = addEventListener; +proto.dispatchEvent = dispatchEvent;