面试题[1-3]

面试题[1-3],第1张

1.Vue的响应式原理中Object.defineProperty有什么缺陷?为什么在Vue3中被抛弃了而采用了Proxy?

原因如下:

a:Object.defineProperty无法低耗费的监听数组下标的变化,导致通过数组下标添加元素,不能实时响应;

b:Object.defineProperty只能劫持对象的属性,从而需要对每个对象每个属性进行遍历,如果属性值是对象,还需要进行深度遍历;Proxy可以劫持整个对象,并返回一个新对象;

c:Proxy不仅可以代理对象,还可以代理数组,还可以代理动态增加的属性。

2.在写Vue项目时,为什么要在列表属性中写key,其作用是什么?

答:Vue是采用diff算法来对比新旧虚拟节点,从而更新节点;在Vue的diff函数交叉对比中,当前节点跟旧节点头尾交叉对比没有结果时,会根据新节点的Key去对比旧节点数组中的key,从而找到相应旧节点(这里对应的是一个Key=>index的map映射),如果没有找到就认为是一个新增节点,而如果没有key,那么就会采用遍历查找的方式去找到对应的旧节点,相比而言,map映射更快。

3.对于HTML语义化的理解?

答:语义化就是选择与语义相符的标签,使标签语义化,这样不仅便于让开发者阅读,同时也能便于维护和写出更加优雅的代码,还能够让搜索引擎和浏览器等工具更好的解析,通俗的将语义化就是让正确的标签做正确的事。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1321336.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-12
下一篇 2022-06-12

发表评论

登录后才能评论

评论列表(0条)

保存