20200331
1.外边距合并/border合并
若边框为1PX, 则给合并的div添加margin-right:-1px; margin-bottom:-1px;
表格边框合并:table{border-collapse:collapse;
}
2.浅拷贝和深拷贝
最简单的深拷贝:aa = JSON.parse( JSON.stringify(a) )
浅复制--->就是将一个对象的内存地址的“”编号“”复制给另一个对象。深复制--->实现原理,先新建一个空对象,内存中新开辟一块地址,把被复制对象的所有可枚举的(注意可枚举的对象)属性方法一一复制过 来,注意要用递归来复制子对象里面的所有属性和方法,直到子属性为基本数据类型。总结,深复制理解两点,1,新开辟内存地址,2,递归来刨根复制
3.jsonp是jquery常用的跨域方法。
4.跨域相关:
只要协议,域名,端口号不同则视为不同域。解决跨域VUE用axios JQ用jsonp
5.css选择器的优先级
行内样式>id>class>标签>相邻>子选择器>后代选择器>*>属性>伪类
6.setTimeout clearTimeout ////setInterval
时间选择器,清除时间选择器,配合使用,不清除一直循环执行;时间选择器,只执行一次
7.JS跳转
javascript:history.go(-1)
javascript:location.href=""
8.VUE router和 router-link怎么实现跳转
router.go(1)
router.push('/')
9.怎么判断两个对象相等
JSON.stringify(obj)==JSON.stringify(obj);//true
10.一行代码实现数组去重
var arr=["1","ae","323","2434",2,"asd",2];
[...new Set(arr)]
11.水平垂直居中
第一种:
#container{
position:relative;
}
#center{
width:100px;
height:100px;
position:absolute;
top:50%;
left:50%;
transform: translate(-50%,-50%);
}
第二种:
#container{
position:relative;
}
#center{
width:100px;
height:100px;
position:absolute;
top:50%;
left:50%;
margin:-50px 0 0 -50px;
}
第三种:
#container{ position:relative; } #center{ position:absolute; margin:auto; top:0; bottom:0; left:0; right:0; }
第四种:
#container{
display:flex;
justify-content:center;
align-items: center;
}
12.右边宽度固定,左边自适应
第一种:
<style> body{ display: flex; } .left{ background-color: rebeccapurple; height: 200px; flex: 1; } .right{ background-color: red; height: 200px; width: 100px; } </style> <body> <div class="left"></div> <div class="right"></div> </body>
第二种:
<style>
div {
height: 200px;
}
.left {
float: right;
width: 200px;
background-color: rebeccapurple;
}
.right {
margin-right: 200px;
background-color: red;
}
</style>
<body>
<div class="left"></div>
<div class="right"></div>
</body>
13.locationStorage不能清除的时候,什么时候过期
除非被清除,否则永久保留。clear可清除
localStorage.clear();
localStorage.setItem()localStorage.getItem()
14.sessionStorage和locationStorage能跨域拿到值吗?比如www.baidu.com设置的值能在m.baidu.com拿到吗?
不能!我试过了
15.不用循环语句实现一个长度为100的数组,索引值和值相同的数组[0,1,2,3...100]
var arr=new Array(100)
[...arr.keys()]
16.解释原因
var a={},b={key:'b'},c={key:'c'},d=[3.5.6];
a[b]=123;a[c]=345;a[d]=333;
console.log(a[b]); //345
console.log(a[c]); //345
console.log(a[d]) //333
解释:a[XX]中的xx会自动转为字符串,所以a[{}]会转换为["object object"],所以a[b]和a[c]转为一样的值。
17.git使用过程中,如果你在开发业务,突然另外一个分支需要修改BUG,怎么办。
git stash //将本次修改存到暂存区
git stash pop //将所有暂存区的内容取出来
18. DOM事件委托是什么原理,有什么优缺点。
原理:事件冒泡机制
优势:可以大量减少内存,减少时间注册;动态新增则元素时不用再进行事件绑定;
劣势:盲目使用可能会出现事件误绑
19.var a=2;var b=3;var c=a+++b;
a++是先计算再++ c=a+b==>5 a=2+1=3
++a是先加再计算
20.请详尽解释AJAX的工作原理
创建ajax对象,判断数据传输方式,打开链接,发送,判断相应状态,执行回调函数
$.ajax({
headers: {'Content-Type': 'application/json;charset=UTF-8'},
url: "",data: JSON.stringify(setData),
type: "POST",
dataType: "jsonp",
success: function (res) {},error: function (res) {}
})
21.如何优化自己的代码
代码重用,避免全局变量,拆分函数避免函数过于臃肿,注释
22.请解释一下语义化HTML
内容使用特定标签,通过标签就能大概了解整体页面的布局
23.写一个function去除字符串前后的空格
let str = ' hello '
console.log(str.trim())