1、assign与merge方法的差异
object.assign方法的第一个参数是目标对象,后面的参数都是源对象。
如果目标对象与源对象有同名属性,或多个源对象有同名属性,则后面的属性会覆盖前面的属性。
merge 也和 assign 类似,不同的地方在于 merge 遇到相同属性的时候,如果属性值为纯对象(plain object)或者集合(collection)时,不是用后面的属性值去覆盖前面的属性值,而是会把前后两个属性值合并。
2、undefined与null及空字符串的差异
_.has()方法用于检查路径是否是对象的直接属性。如果路径存在,则返回true,否则返回false。
_.isNull()方法用于查找对象的值是否为空。如果该值为null,则返回true,否则返回false。
3、base herf属性
相对路径的文件前加上基链接指向的地址
4、空值合并操作符( ?? )
当左侧的操作数为 null 或者 undefined 时,返回其右侧操作数,否则返回左侧操作数。
5、选人组件,选择领导时定位到该标签出现二次确认弹框——弹框定位函数
setLeadTipModalPosition(type) {
this.$nextTick(() => {
let elem = null;
if (type === 'single') {
// 单选,获取值的坐标
elem = this.$refs.select.$el.querySelector('.ivu-select-selection');
} else {
// 多选,获取最后一个ivu-tag-text标签的坐标
let tagListDom = this.$refs.select.$el.querySelectorAll('.ivu-tag-text');
elem = tagListDom[tagListDom.length - 1];
}
let tagPositon = elem.getBoundingClientRect();
// let hiddenDom = document.querySelector('.select-leader-tip .ivu-modal-hidden');
// if (hiddenDom) {
// hiddenDom.parentNode.removeChild(hiddenDom);
// }
let modalDomArr = document.querySelectorAll('.select-leader-tip');
if (modalDomArr && modalDomArr.length > 0) {
modalDomArr.forEach((item) => {
// 页面会加载多个弹框Dom找出真正显示的弹框再进行定位
if (!item.querySelector('.ivu-modal-mask').style.display) {
let dom = item.querySelector('.ivu-modal-wrap');
dom.style.left = tagPositon.left + 'px';
dom.style.top = tagPositon.top - 124 + 'px';
}
});
}
});
}