2026-10-25 17:12:17
浅拷贝:只复制对象的第一层属性,若属性为引用类型,复制的仍是引用地址,新旧对象会共享该引用类型数据。实现方式有Object.assign({}, obj)、展开运算符{...obj}等。
深拷贝:递归复制对象的所有层级属性,新旧对象完全独立。可通过JSON.parse(JSON.stringify(obj))(存在局限性,无法处理函数、Symbol等特殊类型)或递归实现自定义深拷贝函数。
节流(throttle):规定在一个单位时间内,只能触发一次函数执行。适用于如滚动事件、窗口调整等高频触发场景,减少不必要的计算。
防抖(debounce):触发事件后,在n秒内函数只能执行一次,若在n秒内又触发了事件,则重新计算函数执行时间。适用于搜索框输入联想等场景,避免频繁请求。
自动批处理:减少不必要的渲染,提高性能。
新的API:如startTransition,用于区分紧急和非紧急更新,避免界面卡顿。
并发渲染:允许React同时准备多个版本的UI,根据优先级进行渲染。
副作用函数:如useEffect,用于处理组件渲染后的副作用操作,如数据获取、订阅等,可指定依赖项控制执行时机。
普通event:用于处理用户交互事件,如点击、输入等,与组件渲染无直接关联。
Loader和plugin区别:Loader用于对模块的源代码进行转换,如将ES6代码转换为ES5代码;Plugin用于扩展webpack功能,如优化打包结果、资源管理等。
优化策略:包括代码分割、压缩代码、使用CDN加速、缓存等。
CSRF:跨站请求伪造,攻击者通过伪造用户请求,执行非用户本意的操作。防御措施包括使用CSRF Token、验证Referer等。
XSS:跨站脚本攻击,攻击者在页面中注入恶意脚本,窃取用户信息。防御措施包括对用户输入进行过滤、使用CSP等。