前端大杂货铺系列《七》
前言
之前是前端踩坑系列,但是我发现除了一些坑之外,自己还有一些知识比较杂的,现在就换个名字接着记录这些前端的坑和知识点
踩过的坑
assign
Object.assign 方法,大家应该都比较熟悉,在 MDN 上的解释是这样的
用于将可枚举属性的值从一个或者多个源对象复制到目标对象,它将返回目标对象
const target = { a: 1, b: 2 };
const source = { b: 4, c: 5 };
const returnedTarget = Object.assign(target, source);
console.log(target);
// expected output: Object { a: 1, b: 4, c: 5 }
console.log(returnedTarget);
// expected output: Object { a: 1, b: 4, c: 5 }
可以看到,如果目标对象中拥有和源对象一样的属性,那么源对象的属性将会覆盖目标对象的值
问题就是出在这个位置,我们在使用 Object.assign 的时候,要留意两个对象是否有相同的属性,有相同的属性它们是否有相同的含义,是否可以使用源对象替代目标对象
lodash 的一个小坑
同事分享的一个小坑,在使用 lodash 的 get 方法的时候,如果是空值 ''
,而不是 undefined 的话,就不会取第三个值
let a = {}
a.c = ''
let b = _.get(a, 'c', 33)
let c = a && a.c || 33
console.log(b) // '',预期结果是33,结果是''
console.log(c) // 解决方法,输出33
前端全面使用vue,不应该使用zepto或jQuery,更不应该直接操作DOM
首先要明白操作 DOM 的含义,指的是我们会对 DOM 做一些修改或者遍历(遍历 DOM 节点下的子节点),在 Vue 中我们对 DOM 的一些修改,可以通过 v-show 和 v-if 等的操作进行了,还有双向数据绑定的操作,所以不需要修改 DOM。
有个小疑问,就是如果是滚动滑动的一个监听,我们需要拿到DOM,这个算操作DOM么?
offsetTop 返回 0
很可能该元素设置样式 display: none
了!
React 相关
- React动态添加 class 类
推荐写法
<div
className={`mst-nav-408-wrap ${this.state.tabPosition === 'left'? 'mst-nav-408-wrap-left': ''}`}>
</div>
- React 必须使用 setState 方法更新组件的 state
- componentDidMount() 方法会在组件已经被渲染到 DOM 中后被运行
我不知道的知识点
利用GitLab API来获取仓库中某个文件的内容[1]
mac电脑终端怎么显示项目树:tree命令的使用[2]安装完成后,输入 tree -L 3 -I "node_modules"
,更多命令自行了解
[1]
利用GitLab API来获取仓库中某个文件的内容: https://blog.csdn.net/felix_yujing/article/details/52712925
[2]
mac电脑终端怎么显示项目树:tree命令的使用: https://segmentfault.com/a/1190000009962072
- 如果未来的AI拥有意识,你舍得不理它吗?
- centos下安装python3
- jboss:在standalone.xml中设置系统属性(system-properties)
- iptables
- Django-form表单
- 比较git commit 两个版本之间次数
- eclipse: workspace出错导致无法启用的解决
- 【node错误】/usr/bin/env: node: No such file or directory
- Django比较相等或者不相等的模板语法ifequal / ifnotequal
- 使用testNGListenter来自定义日志
- 通过代码去执行testNG用例
- $.cookie is not a function;原因及解决办法
- 为何学习以及如何理解SSH框架?内含Hibernate学习指南
- 生成唯一标识 字符串跟时间戳的结合
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 文献笔记七十一:REDO根据vcf文件检测植物细胞器基因组RNA编辑位点
- 如如何基于Docker快速搭建Elasticsearch集群?
- 解决Centos8无法安装docker的问题
- 正则表达式
- Python函数详解一(函数参数、变量作用域)
- Java9改进try-with-resources语法
- 如何用Python实现网页转PDF
- LeetCode 242. 有效的字母异位词
- 再见Excel!最强国产开源在线表格Luckysheet走红GitHub
- 快速学习Python之迭代器和生成器
- js事件冒泡
- Deepin创建应用快捷方式
- SecureCRT下Python脚本编写
- 一篇文章上手Vue3中新增的API
- 先电OpenStack卸载脚本