应届生前端面试题01
this指向问题
<script>
var fai = '足球俱乐部';
var obj = {
fai:'更强的',
exec:function(){
return (function(fai){
return function(){
console.log(this.fai);//足球俱乐部
console.log(fai);//更强的
}
})(this.fai);
}
}
var exec = obj.exec();
console.log(exec.fai);//undefined
console.log(exec());//undefined
</script>
普通函数中,this指向window对象;
函数作为对象的属性,函数中的this指向调用函数的对象;
在构造函数中。此时this指向构造函数的实例对象;
在call和apply中,this指向第一个参数,即被扩展的作用域对象;
js判断数据类型的方法
typeof、
对于基本类型,除 null 以外,均可以返回正确的结果。
对于引用类型,除 function 以外,一律返回 object 类型。
对于 null ,返回 object 类型。
对于 function 返回 function 类型。
obj instanceof Array//官方推荐 a instanceof b 判断a是否属于b的实例对象
A.constructor;//获取A的构造函数
console.log([].constructorArray);//true
console.log(new Date().constructorDate);//true
. null 和 undefined 是无效的对象,因此是不会有 constructor 存在的,这两种类型的数据需要通过其他方式来判断
toString()
console.log(typeof(window));//object
console.log(Object.prototype.toString.call(null))//[Object null]
css水平垂直居中方法:
absolute + 负 margin
absolute + margin auto
.one{
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
margin: auto;
}
absolute + calc
position: absolute;;
top: calc(50% - 高度的一半);
left: calc(50% - 高度的一半);
居中元素不定宽高:
absolute + transform
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
lineheight
writing-mode
table
css-table
.wp{
display: table-cell;
text-align: center;
vertical-align: middle;
}
.one{
display: inline-block;
}
flex
.wp {
display: flex;
justify-content: center;
align-items: center;
}
grid
.wp {
display: grid;
}
.box {
align-self: center;
justify-self: center;
}
数组去重的方法:
1.Es6 中的set
Return Array.from(new Set())
2.用for嵌套for,用splice去重
3.利用indexOf
4.用sort()
arr.sort()先排序,for遍历,然后arr[i] 和 arr[i-1]比较,!==的 arr.push(arr1[i])
5.用includes
for遍历,!arr1.includes(arr[i]) push
6.用hasOwnProperty
7.用filter
arr.filter((item,index,arr)=>{
return arr.indexOf(item,0)===index)