面试高频题1
1.事件委托
2.json格式数据
JSON语法可以表示以下三种类型的值:
1.简单值:使用与JavaScript 相同的语法,可以在JSON中表示字符串,数值,布尔值和null。
2.对象:对象作为一种复杂数据类型,表示的是一组有序的键值对。而每组键值对中的值可以是简单值,也可以是复杂数据类型的值。
3.数组:数组也是一种复杂数据类型,表示一组有序的值的列表,可以通过数值索引来访问其中的值。数组的值也可以是任意类型–简单值,对象或数组。
3.原型与原型链
首先看console.log(b.n)
在查找时首先看对象自身有没有n属性,如果没有会去原型prototype上查找
当执行b.n时,函数内部this.n = 9999返回b对象,b对象有自身的n属性 所以返回9999
同理
当执行var c = new C()
时,c对象没有自身的n属性,向上查找,找到原型prototype上的n属性,返回4400
4.Object.defineProperty(obj,prop,descriptor())方法
5.hasOwnProperty
6.html语义化标签
7.块状元素、内联元素
8.如何解决跨域问题
浏览器有同源策略,请求会发送出去但是不会让你的网页拿到JS内容,因此形成跨域
这里的“域”指的是协议、端口号和主机都需要一致的URL
URL必须同源才允许交互
为了让两个不同源的URL进行交互,因此引出跨域:
- JSONP:利用
<script></script>
默认允许在别的源请求脚本,通过JSON形式的数据。但是JSONP方法只允许发送GET方法 - CORS:设置头部Access-Control-Allow-Origin,方法简单
- 设置反向代理
设置代理服务器,前端有同源策略的影响,但是反向代理服务器和服务器之间属于服务器之间的沟通,并不受同源策略的影响
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-048KWtnM-1663826392472)(https://gitee.com/zuo-chaoran0830/pic-go/raw/master/image/image-20220922135204199.png)]
9.客户端做数据持久化存储数据的有哪些方法?
10.localStorage相关api,并实现getAll方法,获取本地存储
localStroage.setItem(key,value) //添加数据
localStorage.getItem(key) //根据key获取值
localStorage.removeItem(key) //根据key删除一条数据
localStroage.clear() //清空数据
localStorage.length //获取总数居的长度
//获取第N个书的键值对
localStorage.getAll = function(){
var obj = []
for(let i = 0;i < localStorage.length;i++){
obj.push(localStorage.key(i))
}
return obj
}
11.css3新特性
12.flex布局 移动端适配
详细见:https://blog.csdn.net/qq_61643292/article/details/126084055?spm=1001.2014.3001.5502
13.argument
14.解构赋值
let hello = props.user
即props.user里面有hello这个属性,把它单独提取出来,下面用hello这个属性的时候就不用一直props.user.hello
了,只需要直接用hello
15.4xx的http请求返回码的意思
- 400(错误请求)服务器不理解请求的语法
- 401(身份验证错误)此页要求授权 您可能不希望将此网页纳入索引
- 403(禁止) 服务器拒绝请求
- 404(未找到)服务器找不到请求的网页
16.请列举几种除了px外的CSS度量单位并解释其含义。
-
rem 相对于根字体大小的单位,比如可以设置 1rem=50px,以根目录元素为基准
-
em 相对于font-size,比如font-size:16px(浏览器默认),则2em=32px以父元素为基准
-
vm 即viewpoint width,视窗宽度,宽度100%就是100vw
-
vh 即viewpoint height ,同上,高度100%就是100vh
17.new操作符做了什么
var func = function(){}
var newO = new func()
new一共经历了四个阶段
1.创建了空对象
var newO = new Object()
2.设置原型链
newO.proto = func.prototype
3.将func中的this指向newO
var result = func.call(newO)
4、判断Func的返回值类型:
如果是值类型,返回obj。如果是引用类型,就返回这个引用类型的对象
18.简述cookie/session记住登录状态机制原理
cookie
- cookie是客户端的状态保存机制
- 存储在本地浏览器,且存储数据量有限,不同的浏览器有不同的存储大小,但一般不超过4KB。因此使用cookie只能存储一些小量的数据。
- 当浏览器访问网站后,这些网站将一组数据存放在客户端,当该用户发送第二次请求的时候,就会自动的把上次请求存储的cookie数据自动携带给服务器,服务器通过浏览器携带的数据就能识别当前用户。
session
- session是服务端的状态保存机制
- 存储在服务器,更安全,不被窃取
- Session是存放在服务器端的类似于HashTable结构(包括key,value)来存放用户数据,当浏览器第一次发送请求时,服务器自动生成了一个HashTable和一个Session ID用来唯一标识这个HashTable。并将其通过响应发送到浏览器。当浏览器第二次发送请求,会将前一次服务器响应中的Session ID放在请求中一并发送到服务器上,服务器从请求中提取出Session ID,并和保存的所有Session ID进行对比,找到这个用户对应的HashTable。
19.网页中接收事件的顺序(事件流)有哪些?它们之间的区别是什么?
事件流有三个阶段:
-
事件捕获阶段:从 window 逐层向下传递到 目标元素,过程中遇到注册的捕获事件就会触发它
-
处于目标阶段:事件到达目标元素,触发目标元素上注册的事件
-
.事件冒泡阶段:从目标元素向上传递到 window,过程中遇到注册的冒泡事件就会触发它
20.position的值的含义如下:
摘自《CSS》权威指南
position的值的含义如下:
- static:默认值
- 元素框正常生成。
- 块级元素生成一个矩形框,作为文档流的一部分,行内元素则会创建一个或多个行框,置于其父元素中
- relative:相对定位
- 元素框偏移某个距离,元素仍保持其未定位前的形状,它原本所占的空间仍保留
- absolute:绝对定位
- 元素框从文档流完全删除,并相对于其包含块定位,包含块可能是文档中的另一个元素或者是初始包含块。
- 元素原先在正常文档流中所占的空间会关闭,就好像该元素原来不存在一样。
- 元素定位后生成一个块级框,而不论原来它在正常文档流中生成何种类型的框。
- fixed:固定定位
- 元素框的表现类似于将position设置为abosolute,不过其包含块是视窗本身。
21.Object.defineProperty与Object.keys
Object.keys(obj)返回obj对象中自身可枚举属性组成的数组,虽然obj对象新增了id属性,但该属性是不可枚举的,故①式的输出结果为2,A选项错误;
使用for…in…循环可以遍历对象可枚举的属性,id属性由于不可枚举,因此仍然不会被遍历到,②式的输出结果为华为 1999,B选项错误;
price属性设置了configurable:false,表示该属性不可删除,删改无效,也不可再次修改其特性,但是属性值是可以重写的,因此③式输出结果为{brand: ‘华为’, price: 999, id: 1},C选项正确,D选项错误。
22.宏任务与微任务
1432
结论:微任务执行时机比宏任务早
宏任务:setTimeout、setInterval,DOM事件、AJAX请求
微任务:Promise,async/await
为{brand: ‘华为’, price: 999, id: 1},C选项正确,D选项错误。
22.宏任务与微任务
[外链图片转存中…(img-bjnfdFPN-1663826392473)]
1432
结论:微任务执行时机比宏任务早
宏任务:setTimeout、setInterval,DOM事件、AJAX请求
微任务:Promise,async/await
同步 > 异步(微任务 > DOM渲染 > 宏任务)