掘友等级
获得徽章 8
#每天一个知识点# instanceof的原理
function myinstanceOf(left, right) {
if (!left.__proto__) return false
if (left.__proto__ === right.prototype) {
return true
} else {
return myinstanceOf(left.__proto__, right)
}
}
#每天一个知识点# 移动端的点击事件的有延迟,时间是多久,为什么会有?怎么解决这个延时?
移动端点击有 300ms 的延迟是因为移动端会有双击缩放的这个操作,因此浏览器在 click 之后要等待 300ms,看用户有没有下一次点击,来判断这次操作是不是双击。
● 1.通过 meta 标签禁用网页的缩放。
● 2.通过 meta 标签将网页的 viewport 设置为 ideal viewport。
● 3.调用一些 js 库,比如 FastClick
#每天一个知识点# 发现react莫名的渲染了两次,原因:React 18 之后的版本,开启严格模式将会带来如下只有在开发模式下才有的行为:
组件将重复多渲染一次,以发现由非纯函数渲染引起的 bug;
组件将重复多运行一次 Effect,以发现由遗漏的 Effect 清理引起的 bug;
组件将检查弃用 API 的使用情况。
#每天一个知识点# vue2响应式原理
通过Object.defineProperty对数据进行劫持和观察者模式实现的
vue会将data的数据重新遍历通过Object.defineProperty添加上去,并且在get中收集依赖,set中触发依赖,
对于数组的话,会重写会改变原值的方法,通过一个值来存储数组的变化值去进行处理
#每天一个知识点# 求幂运算符
2 ** 3 // 8
和Math.pow(2, 3)一样
#每天一个知识点# pc端监听是否进入全屏
window.addEventListener('resize', function() {
let isFullScreen = document.fullscreen || document.mozFullScreen || document.webkitIsFullScreen
let ua = navigator.userAgent.toLowerCase()
if (isFullScreen) {
console.log('进入全屏')
} else {
console.log('退出全屏')
}
})
下一页