文章目录
- new 操作符具体干了什么呢?
- 原型和原型链
- 数组的方法
- 字符串的方法
- 闭包
- 什么是预解析?
- This指向
- call/apply/bind 的区别
- BOM 中有哪些常用的对象?
- 列举几个常见的浏览器兼容问题?
- 什么是事件委托
- 如何实现多个标签页的通信?
- sessionStorage,localStorage 和 cookie 三者有什么区别?
- 常见 HTTP 状态码都有哪些?
- 你知道的 HTTP 请求方式有几种?
- ajax 的工作原理
- 如何解决跨域问题?
- 什么是同步和异步, 那种执行方式更好?
- 如何解决异步回调地狱
- GET 和 POST 的区别,何时使用 POST
- 同源策略
- 针对页面性能优化,你有哪些优化方案
- es6新特性
- 使用 let 和 var区别
- 箭头函数有什么作用及实际应用场景
- Null和undifind的区别是什么
- 登录的问题
new 操作符具体干了什么呢?
- 开辟空间,创建一个空对象
- 将 this 指向空对象
- 动态给刚创建的对象添加成员属性;
- 隐式返回
原型和原型链
- 原型:创建一个构造函数,他有一个prototype属性指向原型对象,该函数拥有原型对象所有的属性和方法
- 原型链:每个对象拥有一个原型对象,通过__proto__指向原型对象,并继承方法和属性。原型对象也会有原型,这样一层一层的关系就是原型链。
数组的方法
push,pop,unshift,shift,splice,concat,reverse,jion
字符串的方法
substr/substring,indexof,replace,charAt,toUpperCase/toLowerCase,split
闭包
- 定义:闭包是指这个函数有权访问另一个函数作用域中的变量,创建闭包最常用的方式就是在一个函数内部创建另一个函数。
- 作用:阻止变量被回收。私有化变量,模拟块级作用域,
- 缺点:闭包会导致函数的变量一直保存在内存中,过多的闭包可能会导致内存泄漏
什么是预解析?
js执行之前会将变量和函数进行声明提升,提升到代码最前面,但不提升赋值。
This指向
- 普通函数中指向全局 window;
- 对象的成员方法中指向该方法的宿主对象;
- 构造函数中指向 new 出来的实例对象;
- 事件处理函数中指向事件源;
- 回调函数中指向全局 window
call/apply/bind 的区别
- call和apply会调用函数,bind会返回一个函数。
- call从第二个参数开始需要一个参数列表,
- apply 第二个参数需要是一个数组
BOM 中有哪些常用的对象?
- location:
.href; 页面 url 地址 ,.hash; url 中#后的部分,.search; url 中?后的部分(查询字符串),.reload(); 刷新页面; - history:
.go(),.forward(),.back();
列举几个常见的浏览器兼容问题?
- ajax:主流浏览器发送 ajax 使用 XMLHttpRequest 创建异步对象,IE 浏览器时候用 XActive 创建异步对象;
- 注册事件:主流浏览器注册事件addEventListener,IE 浏览器:注册事件:attachEvent
- 阻止事件冒泡:主流浏览器:event.stopPropagation(),IE 浏览器:event.cancleBubble=true;
- 获取事件源:主流浏览器 event.target,IE浏览器event.srcElement
什么是事件委托
本应该注册给子元素的事件, 注册给父元素
原理:事件冒泡
如何实现多个标签页的通信?
localStorage 通过 setItem()方法保存数据,getItem()获取数据
sessionStorage,localStorage 和 cookie 三者有什么区别?
- cookie: 存储数据量相对比较少,需要设置过期时间,cookie 中存储的数据会伴随每一次http 请求被发送到服务端
- sessionStorage :数据存储在页面的内存中,所以数据会跟随页面的关闭而销毁
- localStorage :将数据存储在电脑的磁盘上,需要手动删除
常见 HTTP 状态码都有哪些?
200:响应内容返回成功
400:参数错误
404:地址不存在
500:服务器错误
你知道的 HTTP 请求方式有几种?
get,post,head,put
ajax 的工作原理
- 创建一部对象 var xhr=new XMLHttpRequest()
- 设置请求行 xhr.open(‘请求方式’,请求地址);
- 发送请求 Get 方式 xhr.send(null),
如何解决跨域问题?
jsonp, 服务器代理, cors
什么是同步和异步, 那种执行方式更好?
- 同步是指一个程序执行完了接着去执行另外一个程序
- 异步是指多个程序同时执行. 所以异步效率更高, 因为异步不会出现阻塞现象,
如何解决异步回调地狱
- promise
- async/await
- generator
GET 和 POST 的区别,何时使用 POST
- get:是将要传递的参数拼在 url 中进行传递,传递数据量少, 不安全
- post:是将传递的参数放在请求体里传递, 携带数据量大, 相对安全. 要提交一些敏感数据(比如登录密码),上传文件时, 必须使用 post请求.
同源策略
浏览器只允许 js 代码请求同协议,域名,端口的数据接口上的数据
针对页面性能优化,你有哪些优化方案
使用精灵图,启用 CDN 加速服务;图片懒加载,
es6新特性
const,let,模板字符串,解构赋值,展开运算符,对象属性简写,函数参数默认值,Promise 异步对象,class 类
使用 let 和 var区别
let 声明的变量有块级作用域, 并且没有变量的声明提升
箭头函数有什么作用及实际应用场景
- 作用:箭头函数可以使函数内部的 this 指向和函数外部保持一致;
- 应用场景:
- ajax的回调函数中使用箭头函数让回调函数中的 this 指向事件源
- 定时器的第二个参数中使用箭头函数, 避免函数内部的 this 指向全局 window
Null和undifind的区别是什么
- Null:代表空值,代表一个空对象指针。用法如下
- 作为函数的参数,表示该函数的参数不是对象。
- 作为对象原型链的终点。
- undefined:声明了一个变量未初始化。用法如下
- 变量被声明了,但没有赋值时,就等于undefined。
- 调用函数时,应该提供的参数没有提供,该参数等于undefined。
- 对象没有赋值的属性,该属性的值为undefined。
- 函数没有返回值时,默认返回undefined。
- 实际上,undefined值是派生自null值的,二者进行相等比较会返回true
登录的问题
登录的时候后台会传递一个token,我们本地缓存,请求的时候讲token携带在请求头中