获得徽章 0
#每天一个知识点#
对象数组去重组成新数组:
const map = new Map();
let newArr = arr.filter(v => !map.has(v.id) && map.set(v.id, 1))
评论
#每天一个知识点#
Vue错误监听
1)window.onerror
可以监听当前页面所有的 JS 报错,jQuery 时代经常用。
注意,全局只绑定一次即可。不要放在多次渲染的组件中,这样容易绑定多次。
window.onerror = function(msg, source, line, column, error) {
console.log('window.onerror---------', msg, source, line, column, error)
}
2)errorCaptured 生命周期
会监听所有下级组件的错误。可以返回 `false` 阻止向上传播,因为可能会有多个上级节点都监听错误。
errorCaptured(error, instance, info) {
console.log('errorCaptured--------', error, instance, info)
}
3)errorHandler
全局的错误监听,所有组件的报错都会汇总到这里来。PS:如果 `errorCaptured` 返回 `false` 则不会到这里。
const app = createApp(App)
app.config.errorHandler = (error, instance, info) => {
console.log('errorHandler--------', error, instance, info)
}
4)异步错误
组件内的异步错误 `errorHandler` 监听不到,还是需要 `window.onerror`
mounted() {
setTimeout(() => {
throw new Error('setTimeout 报错')
}, 1000)
}
展开
1
#每天一个知识点#
发布订阅模式:
Publisher和Observer相互不认识,中间有媒介
如'eventBus'自定义事件
评论
#每天一个知识点#
观察者模式:
Subject和Observer直接绑定,中间无媒介
如“addEventListener”绑定事件
评论
#每天一个知识点#
箭头函数的缺点:
1)没有arguments
2)无法通过call、apply、bind等改变this
3)简写的函数会变得难以阅读
不适用箭头函数的场景:
1)对象方法
2)对象原型
3)构造函数
4)动态上下文
5)Vue生命周期和方法
展开
评论
#每天一个知识点#
单例模式:
单例模式是指一个类,只有一个实例。实现的思路是,创建实例时候加判断,如果有实例则返回,如果没有就new一个,并返回。
function getSingle(func) {
let result;
return function() {
if(!result) {
result = new func(arguments);
}
return result;
}
}
展开
评论
#每天一个知识点#
函数柯里化
//是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数且返回结果的新函数的技术
function curryIt(fn) {
let length = fn.length, args = [];
let result = function (arg) {
args.push(arg);
length--;
if(length <= 0) {
return fn.apply(this, args);
} else {
return result;
}
}
return result;
}
展开
评论
#每天一个知识点#
异步加载script
function loadScript(url, callback) {
let oscript = document.createElement("script");
if(oscript.readyState) { //ie8及以下版本
oscript.onreadystatechange = function () {
if(oscript.readyState === 'complete' || oscript.readyState === 'loaded') {
callback();
}
}
} else {
oscript.onload = function () {
callback();
}
}
oscript.src = url;
document.body.appendChild(oscript);
}
展开
评论
赞了这篇沸点
虽然38度4,但既然同事联系我看东西,我起床开了电脑,那高低给大家更一集
今天宜喝冰阔落于2023-07-07 10:35发布的图片
9
#每天一个知识点#
遍历DOM树
//给定页面上的DOM元素,将访问元素本身及其后代
//对于每个访问的元素,函数将元素传递给提供的回调函数
function traverse(element, callback) {
callback(element);
var list = element.children;
for (var i=0; i<list.length; i++) {
traverse(list[i], callback);
}
}
展开
评论
#每天一个知识点#
获取任意元素的任意属性
function getStyle(elem, prop) {
return window.getComputedStyle ? window.getComputedStyle(elem, null)[prop] : elem.currentStyle[prop]
展开
评论
#每天一个知识点#
将一个元素插入到另一个元素后面
Element.prototype.insertAfter=function(target, elen) {
var nextElen = elen.nextElementSibling;
if (nextElen == null) {
this.appendChild(target);
} else {
this.insertBefore(target, nextElen);
}
}
展开
评论
#每天一个知识点#
获得滚动条的的滚动距离
function getScrollOffset(){
if(window.pageXOffset){
return{
x:window.pageXOffset,
y:window.pageYOffset
}
}else{
return{
x: document.body.scrollLeft + document.documentElement.scrollLeft,
y: document.body.scrollTop + document.documentElement.scrollTop
}
}
}
展开
评论
#每天一个知识点#
在鼠标悬停在元素上时,改变鼠标指针的样式。
/* class为'first'的元素 /
.first{
  cursor: not-allowed;
}
/ class为'second'的元素 /
.second{
  cursor: zoom-in;
}
/ class为'third'的元素 */
.third{
  cursor: crosshair;
}
展开
晓祄于2023-07-02 21:25发布的图片
评论
#每天一个知识点#
如何实现多系统统一登录?
评论
#每天一个知识点#
判断元素有没有子元素
function hasChildren(e){
var children = e.childNodes,
len = children.length;
for (var i=0; i<len; i++) {
if(children[i].nodeType === 1) {
return true;
}
}
return false;
}
展开
评论
#每天一个知识点#
找元素的第n级父元素
function parents(ele, n) {
while(ele && n ) {
ele = ele.parentElement ? ele.parentElement : ele.parentNode;
n--;
}
return ele;
}
展开
评论
赞了这篇沸点
#新人报道# [微笑]hello 我是李治,是一名28岁的转行准程序员,我选择了前端作为未来程序员生涯的技术方向,期待和大佬们能有更多的交流
166
下一页
个人成就
文章被点赞 8
文章被阅读 1,858
掘力值 151
收藏集
4
关注标签
9
加入于