2023-11-17 18:06:20
以下是对相关问题的详细解答:
1. 原型链顶端是什么原型链顶端是Object.prototype。它是所有JavaScript对象的原型对象,包含了一些通用的方法和属性(如toString()、hasOwnProperty()等),这些方法和属性可以被所有JavaScript对象继承。因为Object.prototype位于原型链的最顶端,所以任何对象在访问属性或方法时,若自身不存在,就会沿着原型链向上查找,最终到达Object.prototype。
2. GET和POST区别GET:数据附加在URL的查询字符串(如?key1=value1&key2=value2)中,通过浏览器地址栏可见。
POST:数据放在请求体(Request Body)中,不会显示在URL中。
GET:受URL长度限制(通常约2048字符),不适合传输大量数据。
POST:理论上无限制,适合传输大量或敏感数据。
GET:数据暴露在URL中,不适合传输敏感信息(如密码)。
POST:数据在请求体中,相对更安全。
GET:请求可被缓存或保存为书签。
POST:请求通常不会被缓存或保存为书签。
可以,但通常不建议这样做。虽然POST请求的数据理论上可以附加到URL中(此时行为类似GET请求),但这违背了POST的设计初衷(数据应放在请求体中)。这样做会导致:
Props:用于父子组件之间的数据传递,是只读的(子组件不应直接修改props)。
State:用于管理组件内部的状态和数据,是可变的(通过setState或Hooks更新)。
Props:由外部(父组件或全局状态)传入。
State:由组件自身初始化亩备差和管理。
Props:渲染静态迅皮数据(如配置项、父组件传递的初始值)。
State:管理动态数据(如用户输入、定时器状态)。
Hooks是React 16.8引入的特性,允许在不编写类组件的情况下使用状态和其他React特性。常见Hooks包括:
Ref是用于访问组件中DOM元素或自定义组件实例的引用。通过React.createRef()或Hooks(useRef)创建,允许直接操作DOM(如聚焦输入框)或访问自定义组件的方法(需组件暴露方法)。
8. React的setState是同步还是异步,为什么setState是异步的,原因如下:
父传子:通过props。
子传父:通过回调函数(如onClick)。
Context API:提供全局状态共享。
状态管理库(如Redux、MobX):集中管理状态。
通过共同父组件或状态管理库通信。
组件通过dispatch(action)触发状态更新。
Reducer根据action计算新状态。
Store更新状态并通知订阅者(如React组件)。
组件通过connect或Hooks(如useSelector)获取最新状态。
使用SplitChunksPlugin拆分公共依赖。
动态导入(import())实现按需加载。
配置output.filename含[contenthash],利用浏览器缓存。
启用mode: 'production',移除未使用代码。
使用DllPlugin预编译不常变更的依赖。
缩小搜索范围(resolve.extensions、resolve.modules)。
使用merge算法或Array.prototype.concat()结合sort():
function mergeSortedArrays(arr1, arr2) { return [...arr1, ...arr2].sort((a, b) => a - b);}// 更高效的合并(时间复杂度O(n+m)):function mergeSortedArraysEfficient(arr1, arr2) { const result = []; let i = 0, j = 0; while (i < arr1.length && j < arr2.length) { if (arr1[i] < arr2[j]) { result.push(arr1[i++]); } else { result.push(arr2[j++]); } } return result.concat(arr1.slice(i)).concat(arr2.slice(j));}14. 算法题:拼接数组使结果最小问题:输入一个正整数数组,将所有数拼接为一个字符串,打印最小的可能结果。解法: