Vue3
proxy 能够监听到对象中的对象的引用吗?
答:在 Vue 3 中,使用 Proxy 实现的响应式系统能够监听对象中的对象的引用。只要使用 reactive 创建响应式对象,并适当使用 watch 进行观察,就可以追踪到嵌套对象的变化
JS
Promise提供了哪些静态方法
-
Promise.all()
接受一个可迭代对象(通常是数组),并返回一个新的 Promise,该 Promise 在所有输入 Promise 都成功时解析,或者在任何一个 Promise 失败时拒绝。 -
Promise.allSettled()
接受一个可迭代对象,返回一个新的 Promise,该 Promise 在所有输入 Promise 都已变为已完成状态(无论成功还是失败)时解析,并返回一个结果数组。 -
Promise.any()
接受一个可迭代对象,返回一个新的 Promise,该 Promise 在第一个输入 Promise 成功时解析,或者在所有输入 Promise 都失败时拒绝。 -
Promise.race()
接受一个可迭代对象,返回一个新的 Promise,该 Promise 一旦有一个输入 Promise 解析或拒绝,就解析或拒绝。 -
Promise.resolve()
返回一个 Promise 对象,解析为给定值。如果该值是一个 Promise,则返回该 Promise;如果该值是一个 thenable(即具有 then 方法的对象),则返回一个新的 Promise,该 Promise 在被 thenable 解析后解析。 -
Promise.reject()
返回一个 Promise 对象,状态为拒绝,并带有给定的拒因。
对于时间循环机制的进一步了解
宏任务微任务的执行顺序:宏任务结束后,处理所有排队的微任务,再执行宏任务
“宏任务结束”意味着当前宏任务的执行已经完成,JavaScript 引擎将开始处理所有已排队的微任务。具体来说:
- 执行当前宏任务: 事件循环从任务队列中取出一个宏任务并执行它。
- 处理微任务: 当前宏任务执行完成后,JavaScript 引擎会检查微任务队列,并依次执行所有的微任务,直到微任务队列为空。
- 开始下一个宏任务: 一旦微任务队列清空,事件循环将继续处理下一个宏任务。
this指向
var a = 10
var obj = {a: 20,say: () => {console.log(this.a)}
}
obj.say() var anotherObj = { a: 30 }
obj.say.apply(anotherObj)
输出10 10
箭头函数时不绑定this的,它的this来自原其父级所处的上下文,所以首先会打印全局中的 a 的值10。后面虽然让say方法指向了另外一个对象,但是仍不能改变箭头函数的特性,它的this仍然是指向全局的,所以依旧会输出10
其他
虚拟滚动的工作原理
- 可视区域检测:
通过监听滚动事件,检测用户当前可视区域内的元素。 - 动态渲染:
根据用户的滚动位置,仅渲染可视区域内的元素。当用户滚动时,动态计算新的可视区域并更新渲染的元素。 - 占位符:
为了保持页面的布局,通常会使用占位符(例如一个固定高度的空 div)来占据未渲染元素的空间。
了解什么是npx
npx 是 Node.js 附带的一个命令行工具,它的主要作用是运行 Node.js 包和命令行工具,尤其是那些临时使用的工具,npx 是 npm 5.2.0 及更高版本的一部分。它并不是一个独立的包,而是 npm 的一个功能。