1.this
- 定义:this就是一个对象,不同情况下指向不同
- 指向
- 对象调用,指向该对象
- 直接调用函数,this指向全局window对象
- New方式,this指向新创建的对象
- 箭头函数,没有单独的this,与声明所在上下文相同。
- 改变
- 方式:call apply bind
- 对比
- 相同点
- 功能都是可以改变this指向,第一个参数是this指向对象
- 传参是采用后续传参的方式
- 不同点
- 传参:call是单个传入参数,apply是传入一个数组,bind是传入数组和单个参数都可以。
- 执行:call和apply是立即执行,而bind是返回一个函数,想调用再执行。
- 相同点
2.前端新技术
3.流行框架及区别
- Vue React Angular
- 区别
- 组件:都是基于组件,组件获取输入,内部计算,UI模板输出,提高代码可复用性
- Angular依赖于TypeScript;React 专注于使用Javascript ES6; Vue则使用Javascript ES5和ES6。
- 模板:Angular使用特殊的Angular语言; React模板是JSX;Vue的模板、脚本、样式在一个文件中 .vue后缀。
- 数据绑定:Angular、Vue是双向数据绑定,React是单向数据绑定
5.Webpack理解
- webpack 是一个模块打包器(module bundler),处理模块间的依赖关系,并进行打包。
- webpack基本功能
- 依赖管理:方便引用第三方模块,让模块更容易复用、避免全局注入导致的冲突、避免重复加载或者加载不必要的模块
- 合并代码:把各个分散的模块集中打包成大文件,减少HTTP的链接的请求次数,配合uglify.js可以减少、优化代码的体积
- 各种插件:babel把ES6+转化为ES5-,eslint可以检查编译时的各种错误
6.ES6新增
- let const
- 函数扩展:箭头函数和rest参数
- class类的概念
- 代理proxy
- 新增数据类型
- symbol:声明独一无二的值
- Set:类似数组,成员唯一,无重复元素
- Map:类似对象,键不局限于字符串,可以是任意类型
- 字符串扩展
- repeat()函数,平铺指定字符串指定次数
- 模板字符串:``,不使用+号拼接
- 模块:import导入,export导出
- promise对象:异步编程的解决方案,解决回到地狱问题
7.标签语义化理解
- HTML5 语义化标签是指正确的标签包含了正确的内容,结构良好,便于阅读,比如 nav 表示导航条,类似的还有 article、header、footer 等等标签。
8.异步编程
- 回调函数
- promise
- async和await
9.Js基本数据类型
- Number
- String
- Boolean
- Null
- Undefined
- Symbol
10.Js内置对象
- Math
- Date
- Array
- String
- RegExp
11.cookies,localStorage,sessionStorage区别
- Cookie:cookie 数据始终在同源的 http 请求中携带,即 cookie 在浏览器和服务器间来回传递。而 sessionStorage 和 localStorage 不会自动把数据发给服务器,仅在本地保存。
- cookie 数据还有路径(path)的概念,可以限制 cookie 只属于某个路径下,存储的大小很小只有 4K 左右,可以在浏览器和服务器端来回传递,存储容量小
- sessionStorage:仅在当前浏览器窗口关闭前有效,自然也就不可能持久保持, localStorage:始终有效,窗口或浏览器关闭也一直保存,因此用作持久数据;cookie 只在设置的 cookie 过期时间之前一直有效,即使窗口或浏览器关闭。
- localStorage:localStorage 在所有同源窗口中都是共享的;cookie 也是在所有同源窗口中都是共享的。
12.原型,原型链,特点
- 原型:每一个构造函数都拥有一个属性(prototype),指向一个对象,指向这个对象的属性和方法,可以被所有该函数的实例所共享。
- 原型链:对象查找属性,首先会在当前对象中进行查找, 如果找不到则会去对象的原型对象中去查找, 如果找不到则去原型对象的原型对象中去查找, 依次类推,这样形成了一个链式结构,为原型链。
- 特点:JavaScript 对象是通过引用来传递的,我们创建的每个新对象实体中并没有一份属于自己的原型副本。当我们修改原型时,与之相关的对象也会继承这一改变。 当我们需要一个属性时,JavaScript 引擎会先看当前对象中是否有这个属性,如果没有的话,就会查找它的 prototype 对象是否有这个属性,如此递推下去,一直检索到有 object 内建对象
13.HTTP状态码
- 200:成功
- 204:成功,但是返回的响应报文中不包含实体的主体部分,无资源
- 206:客户端进行范围请求
- 301:永久重定向
- 302:临时重定向
- 303:引导向新的URI
- 304:未修改
- 307:临时重定向
- 400:语法错误
- 401:需要HTTP认证
- 403:拒绝访问
- 404:未找到
- 500:服务器错误
- 503:服务器超载
14.HTTP请求方法
- POST:传输实体主体
- GET:获取资源,请求访问已经被URI识别的资源
- PUT:传输文件
- DELETE:删除文件,
- OPTIONS:询问支持的方法,查询针对请求URI指定的资源支持的方法
- TRACK:追踪路径,将之前的请求通信回环给客户端的方法
- HEAD:获得报文首部,不返回报文主体部分
- CONNECT:要求在与代理服务器通信时建立隧道,实现用隧道协议进行TCP通信。
- TCL和SSL协议把通信内容加密后经网络隧道传输。
15.事件委托
- 事件委托指的是,不在事件的发生地(直接 dom)上设置监听函数,而是在其父元素上设置监听函数,通过事件冒泡,父元素可以监听到子元素上事件的触发,通过判断事件发生元素 DOM 的类型,来做出不同的响应。
16.Ajax原理
- ①在用户和服务器之间加了—个中间层(AJAX引擎)
- ②通过XMLHttpRequest对象来向服务器发异步请求,从服务器获得数据
- ③用javascript来操作DOM而更新页面。使用户操作与服务器响应异步化。
这其中最关键的一步就是从服务器获得请求数据
17.Flex
- Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性。 布局的传统解决方案,基于盒状模型,依赖 display 属性 + position 属性 + float 属性。
18.隐藏元素方法
- opacity=0,该元素隐藏起来了,但不会改变页面布局,该元素已经绑定的事件也能触发
- visibility=hidden,该元素隐藏起来了,但不会改变页面布局,但是不会触发该元素已经绑定的事件
- display=none,把元素隐藏起来,并且会改变页面布局,可以理解成在页面中把该元素删除掉一样。
19.display的值及作用
- block:块级元素
- inline:行内元素
- inline-block: 行内块元素
- flex:弹性布局
- none:隐藏元素
20.为什么要初始化CSS样式
- 因为浏览器的兼容问题,不同浏览器对有些标签的默认值也是不同的,所以,如果没对CSS初始化,那么往往就很容易出现浏览器之间的页面显示差异的问题
- 初始化CSS样式主要是提高编码质量,如果不初始化整个页面,做完的东西是会很糟糕,重复的CSS样式很多