interview
javascript-frontend-basics
什么是 DOM 和 BOM

前端 JavaScript 基础面试题, 什么是 DOM 和 BOM?

前端 JavaScript 基础面试题, 什么是 DOM 和 BOM?

QA

Step 1

Q:: 什么是 DOM?

A:: DOM(文档对象模型)是 HTML 和 XML 文档的编程接口。它提供了一种结构化表示文档的方法,并定义了如何访问和操作文档的结构和内容。DOM 表示文档的结构为一棵树,每个节点都表示文档的一部分,例如元素、属性和文本。通过 DOM,开发者可以动态地创建、删除或修改文档的内容和结构。

Step 2

Q:: 什么是 BOM?

A:: BOM(浏览器对象模型)是指浏览器所提供的对象,使开发者可以控制浏览器显示的页面之外的部分。例如,BOM 包含窗口对象、导航对象、历史对象、屏幕对象和位置对象。通过 BOM,开发者可以操作浏览器窗口、导航历史记录、屏幕分辨率等。

Step 3

Q:: 如何使用 JavaScript 操作 DOM?

A:: 使用 JavaScript 操作 DOM 可以通过以下几种方式: 1. 使用 document.getElementById() 方法根据 ID 获取元素。 2. 使用 document.querySelector()document.querySelectorAll() 方法根据 CSS 选择器获取元素。 3. 使用 element.innerHTMLelement.textContent 修改元素内容。 4. 使用 element.setAttribute()element.getAttribute() 操作元素属性。 5. 使用 element.appendChild()element.removeChild() 添加或删除子节点。

Step 4

Q:: 什么是事件委托?

A:: 事件委托是一种利用事件冒泡机制的技术,即将事件监听器添加到父元素,而不是每个子元素。这样,当子元素触发事件时,事件会冒泡到父元素,父元素的事件监听器可以处理该事件。这种方式减少了需要添加的事件监听器数量,提高了性能。

Step 5

Q:: 如何处理跨域请求?

A:: 处理跨域请求的方法有多种,包括: 1. 使用 CORS(跨域资源共享),服务器设置正确的 CORS 响应头。 2. 使用 JSONP(JSON with Padding),通过 script 标签进行跨域请求。 3. 使用代理服务器,将跨域请求发送到代理服务器,再由代理服务器转发请求。 4. 使用 HTML5 的 postMessage API,在不同域的窗口之间发送消息。

用途

面试这些内容是因为它们是前端开发的基础知识,了解和掌握这些知识对于构建动态、交互式和高性能的 Web 应用程序至关重要。在实际生产环境中,开发者会频繁地操作 DOM 来更新页面内容,使用 BOM 控制浏览器行为,处理事件委托提高性能,以及进行跨域请求来与后端 API 交互。\n

相关问题

🦆
什么是事件冒泡和事件捕获?

事件冒泡是指事件从目标元素逐级向上传播到最顶层的父元素,而事件捕获是指事件从最顶层的父元素逐级向下传播到目标元素。可以通过 addEventListener 的第三个参数设置是否使用事件捕获。

🦆
什么是闭包?

闭包是指有权访问另一个函数作用域中的变量的函数。闭包是在一个函数内部定义的另一个函数,并且这个内部函数可以访问其外部函数的变量。闭包常用于数据封装和函数工厂。

🦆
如何优化前端性能?

前端性能优化可以从多方面入手,包括: 1. 压缩和合并 CSS、JavaScript 文件。 2. 使用内容分发网络(CDN)。 3. 延迟加载图片和资源。 4. 使用浏览器缓存。 5. 减少 DOM 操作。 6. 优化 CSS 和 JavaScript 代码。

🦆
什么是 Promise?

Promise 是一种用于处理异步操作的对象。它表示一个异步操作的最终完成(或失败)及其结果值。Promise 有三种状态:pending(进行中)、fulfilled(已成功)和 rejected(已失败)。通过 then() 和 catch() 方法可以处理 Promise 的成功和失败结果。

🦆
什么是 asyncawait?

async/await 是 JavaScript 中用于处理异步操作的语法糖。async 函数返回一个 Promise,await 用于等待一个 Promise 完成。使用 async/await 可以使异步代码看起来像同步代码,简化了异步操作的编写和阅读。