11 01 月 2019 JavaScript 中如何对比两个对象? 2019-01-11 回答使用==或===对两个不同却具有相同属性及属性值的对象进行比较,他们的结果却不会相等。这是因为等号比较的是他们的引用(内存地址),而不是基本类型。为了测试两个对象在结构上是否相等,需要一个辅助函数。他将遍历每个对象的所有属性,然后测试他们是否具有相同的值,嵌套对象也需如此。当然,也可以使用参数来控制是否对原型链进行比较。注意:此代码只对普通对象、数组、函数、日期和基本类型的数
10 01 月 2019 如何克隆一个 JavaScript 对象? 2019-01-10 回答使用扩展运算符...可将对象自身的枚举属性复制到新对象中。但这只能进行浅拷贝,如:constobj={a:1,b:2}constshallowClone={...obj}使用这种技术将会忽略原型链。此外,嵌套对象并不会被克隆,只是复制了他们的引用,因此浅拷贝后嵌套对象和原始对象仍然指向同一个对象。加分回答克隆还可以使用以下几种方法:JSON.parse(JSON.string
09 01 月 2019 请举例说明什么是回调? 2019-01-09 回答回调函数作为实参传入另一个函数内,当某种事件被触发或某些任务被完成时会在外部函数内被调用,通常用于异步编程。由于回调函数会被后来的代码所调用,因此在初始化的时候应注意先声明但不调用。当特定的事件发生时,事件监听器的异步回调才会被执行。如:document.addEventListener("click",()=>{console.log("Theuserclickedonth
08 01 月 2019 实现一个功能和 `Function.prototype.bind` 相同的函数 2019-01-08 题目/**请按要求实现 `bind` 函数:以下代码执行时,需返回正确结果且运行过程中无异常*/letexample=function(){console.log(this)}constboundExample=bind(example,{a:true})boundExample.call({b:true})//{a:true}回答 bind 需接受两个参数:函数和上下文 bind 需创建一
07 01 月 2019 根据食谱和已有食材计算可烹饪的最大次数 2019-01-07 题目/**请按要求实现 `batches(recipe,available)` 函数:1.含有 2 个参数,第一个为食谱对象,第二个为已有食材对象 2.返回可烹饪的最大次数 3.以下代码执行时,需返回正确结果且运行过程中无异常*///return0batches({milk:100,butter:50,flour:5},{milk:132,butter:48,flour:51})batche
07 01 月 2019 `Promise` 有哪些状态? 2019-01-06 回答 Promise 对象用于表示一个异步操作的最终状态(完成或失败)及其返回值。他有以下几种状态:pending:初始状态,完成或失败状态的前一个状态 fulfilled:操作成功完成 rejected:操作失败 pending 状态的 Promise 对象会触发 fulfilled/rejected 状态,在其状态处理方法中可以传入参数/失败信息。当操作成功完成时,Promise 对象的 then 方
05 01 月 2019 后置递增 `i++` 和前置递增 `++i` 操作有什么区别? 2019-01-05 回答他们都会使变量增加 1,只是计算和赋值的顺序不一样。后置递增是先赋值后计算,如:leti=1;console.log(i);//输出 1leta=i++;console.log(i);//输出 2console.log(a);//输出 1 前置递增是先计算后赋值,如:leti=1;console.log(i);//输出 1leta=++i;console.log(i);//输出 2cons
04 01 月 2019 等于操作符 `==` 和 `===` 有什么区别 2019-01-04 回答三个等号===表示严格相等,也就是说类型和值都必须相同。两个等号==会使其中一边的类型进行强制转换,使等号两边的类型都相等后再对数值进行比较。加分回答尽量使用全等操作符。因为其没有隐式转换,这样结果会比较容易预测、计算也会比较快除了等于操作符,还可以使用 Object.is 进行同值比较。他有着自己的特殊用途,不应说他更宽松或更严格于其他等于操作符附表一张 xy=====Objec
03 01 月 2019 CSS 优先级是如何计算的? 2019-01-03 回答浏览器通过优先级权重来判断 CSS 属性值与元素之间的关系:权重越高关系越密切,高权重的 CSS 属性值就会赋予到元素上。我们可以把 CSS 分为四类,每类的矩阵权重从高到底排列如下:内联样式(如:style="font-weight:bold"):[1,0,0,0]ID 选择器(如:#comments):[0,1,0,0]类选择器(如:.footer),属性选择器(如:[src$=".p
02 01 月 2019 `+` 和 `~` 选择器有什么区别? 2019-01-02 回答毗邻兄弟选择器 + 可以选择紧随元素后的所有同级元素。如:div~p 可以选择紧随 div 元素后且与其同级的 p 元素。一般兄弟选择器~可选择元素后的所有同级元素。如:p~span 将会匹配同一父元素下,p 元素后的所有 span 元素。加分回答基本元素选择器*:通用元素选择器,匹配任何元素.footer:匹配 class="footer"的所有元素#comments:匹配 id="comments
01 01 月 2019 CSS sprites 的优点及如何使用? 2019-01-01 回答 CSSsprites 将多张图片合并为一张图片,从而减少浏览器对 HTTP 的请求数量,进而减少网页的加载时间。即使在 HTTP/2 协议下,这依旧可以减少网页的加载时间。在 HTTP/1.1 中,每个 TCP 连接只允许一个请求。现代浏览器虽然可以打开多个(2-8)并行的 TCP 连接,但连接数量依旧有限。HTTP/2 允许浏览器和服务器之间的多个请求在一个 TCP 连接上进行复用。这意味着 TCP 连接