文章结构
本文将按知识分类整理,可在PC端右侧书签栏针对性分类阅读,内容将持续更新。同时,文无第一,武无第二,如有错误及纰漏,望能斧正。本文本着包容、开放、
1. 说说你知道哪些页面布局方式?他们各有什么优缺点?
从早期前端发展到现在,经历了一下发展历程:** table布局,position布局,浮动布局,栅格布局,flex弹性盒子布局 。**
table布局:
优点:不需要使用任何CSS配合就可搭建正题布局;兼容性强,所有浏览器都支持该元素;
缺点:任意单元格的布局属性改变将引起整个表格的回流,耗费性能;各个浏览器对table基础属性实现不同,样式有差异;难以适应复杂业务需求;
position布局:
优点:利用position的五个属性(static、relative、absolute、fixed、sticky)改变元素在文档流中的位置,使用灵活;
缺点:当为元素设置定位时,往往还涉及到为父元素设置定位,额外增加了复杂度;元素脱离文档流后可能引起父元素高度塌陷,需要对父级元素做处理;对于sticky在部分版本浏览器不支持,截止发文,在支付宝小程序也不支持sticky属性。
浮动布局:
优点:可以自由改变元素在同级元素之间的排列顺序;
缺点:需要做清除浮动等后续工作,否则会造成父级元素高度塌陷、影响其他元素布局等问题;。
样式有差异;难以适应复杂业务需求;
栅格布局:
优点:个人认为它是table布局的改良版,它跟table布局一样,都引入二维空间行列的概念。栅格布局使用百分比为单位,没有基础样式,避免了table的缺点;
缺点:原生的栅格布局浏览器对其支持性并不好,反而是集成了栅格布局的bootStrap框架兼容性做的更好,因此大多用的都是bootStrap作为布局工具。
flex布局:
优点:移动端布局神器,在不使用任何UI框架的情况下可以快速形成布局;一整套的属性可以达到解决大多数布局问题;
缺点:属于CSS3引入的属性,仅适用于IE9以上,低版本需要兼容处理;同时,需要掌握繁琐的属性设置;flex属性占用了css的display属性,在部分场景下需要设置特定display属性时,只能另寻它法。
正在加载中……
1. 说说什么是原型链
原型是函数特有的属性,称为:prototype。prototype属性是一个对象,这个对象的作用是:存储需要共享的属性和方法,以便在自己作为构造函数时传给函数实例。prototype对象中有一个自带属性constructor,它是一个函数指针,指向的是实例对象的构造函数。函数还有一个属性:constructor,它是一个指针,指向的是函数构造函数。函数实例依然可以作为构造函数,生成新的函数实例,构造函数与函数实例之间原型形成的关系,称为原型链。原型链的作用是实现方法和属性复用,减少重复代码,节省存储空间,也就是所说的实现继承。原型继承的缺点是,如果共享的属性是引用类型,则会造成所有实例均可更改构造函数属性,另一个弊端是,在生成函数实例时,没办法向构造函数传递参数,做不到自定义属性值。因此,鉴于这两个缺点,常常原型和构造函数一起使用,形成组合继承,组合继承也是JS中继承最常用的模式。
2 说说闭包
闭包本质上是一个函数,这个函数特点是:能够访问另一个函数作用域内的变量。
闭包的作用有:1)避免变量污染全局;
2)模拟块级作用域,封装私有方法,暴露公共方法属性;
3)模拟缓存,局部存储数据;
闭包危害: 主要是垃圾回收问题和内存泄漏问题。
1)闭包函数在执行后无法被销毁,始终存在环境中;
2)闭包中的变无法被垃圾回收识别,造成内存泄漏。
3 什么是内存泄漏?你知道哪些?
内存泄漏指的是:因缺陷或错误造成的不再被使用的内存无法被回收,从而造成内存浪费的情况。
常见的有:
-
意外的全局变量;
-
console.*打印方法;
-
闭包;
-
DOM泄漏;
-
未清理的定时器;
正在加载中……
正在加载中……
如果你现在也想学习前端开发技术,在学习前端的过程当中有遇见任何关于学习方法,学习路线,学习效率等方面的问题,你都可以申请加入我的Q群:前114中6649后671,里面有许多前端学习资料 大厂面试真题免费获取,希望能够对你们有所帮助。