面试高频题一

面试高频题1

1.事件委托

image-20220921163455834

2.json格式数据

image-20220921163654839

JSON语法可以表示以下三种类型的值:

1.简单值:使用与JavaScript 相同的语法,可以在JSON中表示字符串,数值,布尔值和null。

2.对象:对象作为一种复杂数据类型,表示的是一组有序的键值对。而每组键值对中的值可以是简单值,也可以是复杂数据类型的值。

3.数组:数组也是一种复杂数据类型,表示一组有序的值的列表,可以通过数值索引来访问其中的值。数组的值也可以是任意类型–简单值,对象或数组。

3.原型与原型链

image-20220921164128205

首先看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())方法

image-20220921164806901

5.hasOwnProperty

6.html语义化标签

image-20220921165557343

7.块状元素、内联元素

image-20220921165743177

8.如何解决跨域问题

浏览器有同源策略,请求会发送出去但是不会让你的网页拿到JS内容,因此形成跨域

这里的“域”指的是协议、端口号和主机都需要一致的URL

image-20220922132919224

URL必须同源才允许交互

为了让两个不同源的URL进行交互,因此引出跨域:

  1. JSONP:利用<script></script>默认允许在别的源请求脚本,通过JSON形式的数据。但是JSONP方法只允许发送GET方法image-20220922134428102
  2. CORS:设置头部Access-Control-Allow-Origin,方法简单image-20220922134218068
  3. 设置反向代理image-20220922134900364

设置代理服务器,前端有同源策略的影响,但是反向代理服务器和服务器之间属于服务器之间的沟通,并不受同源策略的影响

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-048KWtnM-1663826392472)(https://gitee.com/zuo-chaoran0830/pic-go/raw/master/image/image-20220922135204199.png)]

9.客户端做数据持久化存储数据的有哪些方法?

image-20220921170348320

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新特性

image-20220921171851161

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请求返回码的意思

  1. 400(错误请求)服务器不理解请求的语法
  2. 401(身份验证错误)此页要求授权 您可能不希望将此网页纳入索引
  3. 403(禁止) 服务器拒绝请求
  4. 404(未找到)服务器找不到请求的网页

16.请列举几种除了px外的CSS度量单位并解释其含义。

  1. rem 相对于根字体大小的单位,比如可以设置 1rem=50px,以根目录元素为基准

  2. em 相对于font-size,比如font-size:16px(浏览器默认),则2em=32px以父元素为基准

  3. vm 即viewpoint width,视窗宽度宽度100%就是100vw

  4. 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.网页中接收事件的顺序(事件流)有哪些?它们之间的区别是什么?

事件流有三个阶段:

  1. 事件捕获阶段:从 window 逐层向下传递到 目标元素,过程中遇到注册的捕获事件就会触发它

  2. 处于目标阶段:事件到达目标元素,触发目标元素上注册的事件

  3. .事件冒泡阶段:从目标元素向上传递到 window,过程中遇到注册的冒泡事件就会触发它

20.position的值的含义如下:

摘自《CSS》权威指南

position的值的含义如下:

  • static:默认值
    • 元素框正常生成。
    • 块级元素生成一个矩形框,作为文档流的一部分,行内元素则会创建一个或多个行框,置于其父元素中
  • relative:相对定位
    • 元素框偏移某个距离,元素仍保持其未定位前的形状,它原本所占的空间仍保留
  • absolute:绝对定位
    • 元素框从文档流完全删除,并相对于其包含块定位,包含块可能是文档中的另一个元素或者是初始包含块。
    • 元素原先在正常文档流中所占的空间会关闭,就好像该元素原来不存在一样。
    • 元素定位后生成一个块级框,而不论原来它在正常文档流中生成何种类型的框。
  • fixed:固定定位
    • 元素框的表现类似于将position设置为abosolute,不过其包含块是视窗本身。

21.Object.defineProperty与Object.keys

image-20220922092855512

Object.keys(obj)返回obj对象中自身可枚举属性组成的数组,虽然obj对象新增了id属性,但该属性是不可枚举的,故①式的输出结果为2,A选项错误;

使用for…in…循环可以遍历对象可枚举的属性,id属性由于不可枚举,因此仍然不会被遍历到,②式的输出结果为华为 1999,B选项错误;

price属性设置了configurable:false,表示该属性不可删除,删改无效,也不可再次修改其特性,但是属性值是可以重写的,因此③式输出结果为{brand: ‘华为’, price: 999, id: 1},C选项正确,D选项错误。

22.宏任务与微任务

image-20220922131832999

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渲染 > 宏任务)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

左丘超然

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值