如何克隆一个 JavaScript 对象?

2019-01-10 回答使用扩展运算符... 可将对象自身的枚举属性复制到新对象中。但这只能进行浅拷贝,如:constobj={a:1,b:2}constshallowClone={...obj} 使用这种技术将会忽略原型链。此外,嵌套对象并不会被克隆,只是复制了他们的引用,因此浅拷贝后嵌套对象和原始对象仍然指向同一个对象。加分回答克隆还可以使用以下几种方法:JSON.parse(JSON.string

请举例说明什么是回调?

2019-01-09 回答回调函数作为实参传入另一个函数内,当某种事件被触发或某些任务被完成时会在外部函数内被调用,通常用于异步编程。由于回调函数会被后来的代码所调用,因此在初始化的时候应注意先声明但不调用。当特定的事件发生时,事件监听器的异步回调才会被执行。如:document.addEventListener("click",()=>{console.log("Theuserclickedonth

`Promise` 有哪些状态?

2019-01-06 回答 Promise 对象用于表示一个异步操作的最终状态(完成或失败)及其返回值。他有以下几种状态:pending:初始状态,完成或失败状态的前一个状态 fulfilled:操作成功完成 rejected:操作失败 pending 状态的 Promise 对象会触发 fulfilled/rejected 状态,在其状态处理方法中可以传入参数 / 失败信息。当操作成功完成时,Promise 对象的 then 方

等于操作符 `==` 和 `===` 有什么区别

2019-01-04 回答三个等号 === 表示严格相等,也就是说类型和值都必须相同。两个等号 == 会使其中一边的类型进行强制转换,使等号两边的类型都相等后再对数值进行比较。加分回答尽量使用全等操作符。因为其没有隐式转换,这样结果会比较容易预测、计算也会比较快除了等于操作符,还可以使用 Object.is 进行同值比较。他有着自己的特殊用途,不应说他更宽松或更严格于其他等于操作符附表一张 xy=====Objec

`+` 和 `~` 选择器有什么区别?

2019-01-02 回答毗邻兄弟选择器 + 可以选择紧随元素后的所有同级元素。如:div~p 可以选择紧随 div 元素后且与其同级的 p 元素。一般兄弟选择器~ 可选择元素后的所有同级元素。如:p~span 将会匹配同一父元素下,p 元素后的所有 span 元素。加分回答基本元素选择器 *:通用元素选择器,匹配任何元素. footer:匹配 class="footer" 的所有元素 #comments:匹配 id="comments

CSS sprites 的优点及如何使用?

2019-01-01 回答 CSSsprites 将多张图片合并为一张图片,从而减少浏览器对 HTTP 的请求数量,进而减少网页的加载时间。即使在 HTTP/2 协议下,这依旧可以减少网页的加载时间。在 HTTP/1.1 中,每个 TCP 连接只允许一个请求。现代浏览器虽然可以打开多个(2-8)并行的 TCP 连接,但连接数量依旧有限。HTTP/2 允许浏览器和服务器之间的多个请求在一个 TCP 连接上进行复用。这意味着 TCP 连接

focus 有什么效果?应该怎么正确处理他们?

2018-12-30 回答像按钮或锚点标记等元素被选中时,该元素的外围就会出现轮廓。不同浏览器会呈现不同的效果,但一般是在元素周围显示蓝色的轮廓来表示他已经被选中。过去,很多人使用 outline:0 来移除元素被选中的效果。但是,这会让键盘侠们感到很不友好,因为选中效果被移除了。但是如果不移除的话,元素外围的蓝色轮廓有时候会让大多数人感觉不够舒适美观。Bootstrap 等 UI 框架一般采用更加美观的 box

简述一下 `@media` 的媒体类型

2018-12-28 回答 @media 是可根据一个或多个基于媒体特征、媒体类型等条件来使用样式的规则。其包含以下四种媒体类型:all:适用于所有设备,默认选项 print:仅适用于打印设备 screen:仅适用于台式机、平板电脑、手机等屏幕 speech:仅适用于屏幕阅读器加分回答其余的媒体类型:tty,tv,projection,handheld,braille,embossed,aural 在 MediaQ

CSS 预处理器有什么优势?

2018-12-26 回答 CSS 预处理器添加了一些实用的原生 CSS 没有的的功能,并且他通过使用 DRY(Don'tRepeatYourself)原则使生成的 CSS 更加整洁和易于维护。他通过简洁的嵌套选择器语法减少了大量重复代码。变量、颜色函数(lighten,darken,transparentize 等)等附属工具,mixins 及循环使得 CSS 更像一个真正的编程语言,这使开发者编写复杂的 CSS 更加容易了

什么是 HTML5 存储?解释一下 `localStorage` 和 `sessionStorage`

2018-12-24 回答在 HTML5 中,页面可以在用户的浏览器中存储本地数据。这些数据以 name/value 的格式进行存储,且只能被存储该数据的网页访问。在 localStorage 和 sessionStorage 中存在生命周期的差异。通过 localStorage 存储的数据是持久化的:他不会过期,可以一直存储在用户的电脑上,除非 web 应用程序删除他或用户使用了浏览器中相关的缓存清除功能。sessionS

`rel="noopener"` 应在什么场景下使用,为什么?

2018-12-23 回答 rel="noopener" 是 <a> 超链接标签的一个属性。他可以禁止打开的新页面中使用 window.opener 属性,这样一来打开的新页面就不能通过 window.opener 去操作你的页面。因此 rel="noopener" 应在打开新页面的场景下使用,否则就会导致严重的安全漏洞。如新页面可以通过 window.opener.location=newURL 将你的页面导航至任何网址。