Monkey-yu Blog

生是见识,不是活着。

2020前端试题详解(三)

10. 如何解决浏览器兼容性问题? 据兼容需求选择技术框架/库(jquery) 条件注释、css hack、js能力检测做一些修补 渐进增强: 针对低版本浏览器进行构建页面,保证最基本的功能。然后再针对高版本浏览器做一些改进或追加效果提升用户体验 优雅降级:一开始就做构建完整的功能,然后对低版本浏览器做一些兼容。 11.前端性能优化? 减少http请求 优...

普道科技

1. 手写深拷贝方法 string,number等这些值类型不存在深拷贝浅拷贝问题。只是针对object, Array这些复杂对象类型处理深拷贝。 下面是手写一个深拷贝方法: 1 2 3 4 5 6 7 8 9 10 11 12 13 function deepClone(obj){ let objClone = Array.isArray(obj) ? [] : {}; if(o...

vue题目详解一

1. Vue的优点? 轻量级框架:只关注试图层,是一个构建数据的试图集合。大小只有几十kb。 简单易学:国人开发,易于理解和学习。 双向数据绑定:保留了angular的特点,在数据操作方面更简单。 组件化:保留了react的优点。 试图、数据、结构分离。 虚拟dom: 不再使用原生dom操作节点。 2. 父向子组件传递数据? 通过props。 3. 子向父组件传递数据? ...

网站中英文切换

网站实现国际化,大多数开发者都会用到vue-i18n这个国际化插件。我参与的项目中没有用到这个插件,而实现的国际化功能。思路如下: 1. 新建text.service.js 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 // 引入中文、英文的语言包 import { ...

2020前端试题详解(二)

6. set 、map、weakSet、weakMap的区别 Set: 成员唯一,不重复 [value,value]键值与键名一致,或者说只有键值 可以遍历。方法有:add、delete、has WeakSet: 成员都是对象 成员都是弱引用,可以被垃圾回收机制回收掉,可以用来保存DOM节点,不容易造成内存泄漏 不可以遍历。方法有:add、delete、...

2020前端试题详解(一)

1.什么是BFC、IFC、GFC、FFC? BFC: 块级格式上下文。是web页面的可视c s s渲染的一部分,是块盒子的布局过程发生的区域,也是浮动元素与其他元素交互的区域。 触发BFC的方式: 跟元素 (html 、body) 浮动元素( float不为none的) 绝对定位元素 (position为absolue 或fixed) 行内块元素(display为in...

从面试题了解浏览器的垃圾回收

1. 浏览器怎么进行垃圾回收? 回答这个问题可以从三个点来回答,什么是垃圾?如何捡垃圾?什么时候捡垃圾? 1.什么是垃圾? 不再需要的数据,即为垃圾 全局变量随时可能用到,不是垃圾 举例: 1 2 3 let dog = new Object(); let dog.a = new Array(1); dog.a = new Object() 当 JavaScript...

js题目解答

1.将多维数组降为一维数组 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 var arr1 = [1,2,3,[4,5,[6,7,8],[9,[11]]],[10]]; // 方法一 :手写flatDeep函数 let flatDeep = (arr) => { return arr.reduce((res,cur)=>{ ...

手写div拖拽事件

实现一个可以拖拽的DIV 1 2 3 4 5 6 7 8 9 10 11 12 <!-- html 部分 --> <div id="dragBox">拖拽我</div> <!-- css 部分 --> <style> #dragBox { width:100px; height:100px; backgroun...

手写节流throttle和防抖debounce

在开发过程中,我们经常需要绑定一些持续触发的事件。比如:resize、scroll、mousemove等等,但有时候我们并不希望在事件持续触发的过程中特别频繁的去执行函数。 一、防抖debounce 防抖,是指触发事件后在n秒内函数只执行一次,如果在n秒内又触发了事件,则会重新计算函数执行时间。 使用场景: 浏览器窗口大小resize避免次数过于频繁 登陆,发短信等...