前端面试题
计算机网络
通信三要素
通信的主体、通信的内容、通信的方式
TCP三次握手与四次挥手
HTTP
HTML
CSS
清除浮动的方式
JavaScript
ES6新特性
Promise(),async,await;
let,const
箭头函数
箭头函数特点
没有自己的this,this是外层作用域的this
不能实例化
没有arguments参数
数组
数组方法
Array.isArray()
forEach()
filter()
splice()
Array.prototype.fill():可以快速生成含n个1的数组
遍历数组的方法
forEach()、for...in,for...of
数组排序
数组去重
重绘与回流
什么情况下
事件执行过程
栈,队列,异步,同步,异步,宏任务,微任务
哪些是同步任务,
常见的异步任务有:定时器回调任务,AJAX请求、读写文件操作
JS数据存储原理
哪些存在堆里,哪些存在栈里
原型链
构造函数有显示原型(prototype)和隐式原型()
null和undefined的区别
子元素居中的方法
-
flex布局
父元素设置display:flex;justify-content: center; -
设置绝对定位
{
}
同源策略与跨域
节流阀/互斥锁
8大数据类型
基本数据类型:Number,String,Boolean,null,undefined,symbol,bigint(后两个为ES6新增)
引用数据类型:object
apply() call() bind()
详见:
https://www.bilibili.com/video/BV1XX4y1w7R6/?spm_id_from=333.337.search-card.all.click
https://www.bilibili.com/video/BV1944y1q7N4/?spm_id_from=333.337.search-card.all.click&vd_source=efd4241fdf9061e2f928f58914d04b92
作用:
- 改变函数的this, call() apply() bind()的第一个参数,将会成为调用函数的this
- 实现多重继承,但只能继承实例的属性和方法,不能完全继承原型上的属性和方法
异同 - 都是函数的方法
- 无法通过call apply 和 bind修改箭头函数的this(因为它本身没有this)
- apply() call()还可以调用函数,fn()与fn.apply()/fn.call()等效
- 而fn.bind()不能调用函数,fn()与
fn.bind() fn()等效,所以用bind()指定this后别忘了调用函数或将返回值赋值给一个变量 - bind()返回一个新函数,不影响原来的函数。bind为返回的新函数绑定this和其他参数(绑定后不可修改)
- call()与apply()的区别就是第一个参数后的参数不同,call()后面的参数是单独用逗号隔开的,apply后面的参数是一个数组
- call("指定的this对象",参数1,参数2,参数3,···)
- apply("指定的this对象",arr) arr=[参数1,参数2,参数3,···]
let dog = {
name: "旺财",
eat(food1, food2) {
console.log("我是" + this.name)
console.log("我喜欢吃" + food1 + food2)
}
}
let cat = {
name: "喵喵"
}
//变量作为参数不需要加引号
dog.eat.apply(cat, ["鱼", "肉"])
dog.eat.call(cat, "鱼", "肉")
let newFn = dog.eat.bind(cat, "鱼", "肉")
newFn()

继承示例
function Animal(){
this.eat=function(){
console.log("吃东西")
}
}
function Bird(){
this.fly=function(){
console.log("飞翔~");
}
}
function Cat(){
// 继承实例属性和方法
Animal.call(this)
Bird.call(this)
// Cat本身的属性和方法
this.say=function(){
console.log("喵呜~");
}
}
const cat=new Cat()
cat.eat()
cat.fly()
cat.say()


浙公网安备 33010602011771号