1、自我介绍
2、自我介绍途中问实习都干啥了,用的什么技术栈?
了解过React吗?
了解过,在B站上有看过一些React的视频
Vue的生命周期
beforeCreat
created
beforemount
mounted
beforeupdate
updated
beforedestroy
destroyed
如果是vue3,那最后两个生命钩子是
beforeunmount
unmounted
Vue的数据是单向绑定还是双向绑定?什么是双向绑定?
双向绑定,双向绑定即MVVM,是采用数据劫持和发布订阅者的方式,用object.defineProperty()来劫持各个属性的setter,getter,在数据变化时发布给订阅者,触发相应的监听回调
双向绑定即MVVM,是采用数据劫持和发布订阅者的方式,用object.deineProperty()来劫持各个属性的settrt,getter。在数据变化是发布给订阅者,触发相应的监听回调。
Object.defineProperty()具体是干嘛的?里面的set和get方法又是干嘛的?了解过set和get方法用js(setter、getter)实现吗?
具体干嘛?同上,set是设置属性的一种方法,get是获取属性的一种方法
var person={
_name:"lisi",
_age:18,
//_name的只读。
get name(){
return this._name;
},
//_age的读写。
set age(Age){
this._age=Age;
},
get age(){
return this._age ;
}
};
console.log(person._name+" "+person._age);//lisi 18
person.name='lily';
person.age=21;
console.log(person.name+" "+person.age);//lisi 21
console.log(person._name+" "+person._age);//lisi 21
//因为_name只读不写,所以name不会发生改变。
JS的基本数据类型有哪些?
null,string、undefind、number、symbol、boolean
有了解过vue里的DOM操作吗?比如id、class这些怎么在vue里获取这些
首先js里面获取DOM的方法是docment.getElementByid("")
vue操作DOM用自带的ref属性---this.$refs.id名.属性名="属性值"
了解数组的map和foreach吗?知道他们的区别吗?
foreach和map都会遍历数组,foreach没有返回值,而map有返回值
v-show和v-if有什么区别?
v-show是操作的css中display的切换
v-if是操作的dom节点的销毁和重建
当使用的时候,需求量大就可以使用v-show,需求小(开销)就用v-if。
知道display的其他属性吗?
display:none,display:black,display:inner-black,display:inner,display:flex,
display:box等等
flex布局有用过吗?如何让一个元素在正方形中垂直水平居中?
display:flex height:100px width:100px justify-content: center; align-items: center;
接上题,如果用定位来做该怎么实现呢?
margin:0,padding:0,left:0,right:0,position: absolute,margin: auto; 这句是绝对定位的方式
position: absolute; width: 100px; height: 100px left: 50%; top:50%;transform: translate(-50%,-50%);
父元素本来是由子元素撑起来的,当子元素使用绝对定位后,父元素高度会受影响吗?为什么?
会受影响,因为会脱离文本流
还有没有其他方式让一个元素脱离文档流?
绝对定位,相对定位,float浮动
了解position的sticky属性吗?说说你的理解
粘性定位
在目标区域以内,它的行为就像 position:relative;在滑动过程中,某个元素距离其父元素的距离达到sticky粘性定位的要求时(比如top:100px);position:sticky这时的效果相当于fixed定位,固定到适当位置。
让一个页面元素隐藏的方法除了display:none之外还有其他的方法吗?他们有什么区别?
有,overflow:hidden
区别如下:display:none 隐藏对应的元素但不挤用该元素原来的空间
overflow:hidden 隐藏对应的元素并且挤用该元素原来的空间
说一下页面渲染的过程
renderTree里包括js执行吗?
了解原型链吗?他们是怎么继承的?可以写一个例子吗?
了解,每个函数都有一个prototype属性,除了Function.prototype.bind(),该属性指向原型
每个对象都有__proto__属性,,指向了创建改对象的构造函数的原型,其实这个属性指向了[[prototype]],但是[[prototype]]内部我们并不能访问,所以使用__proto__来访问。
每个对象通过__proto__来寻找不属于该对象的属性,__proto__讲对象连接起来就组成了原型链
说一下call、apply和bind的区别
首先这三个都可以改变this指向
call:使用this的时候,传入一个或者多个参数来调用同一个函数
apply:应用于某个对象的一个方法,用另一个对象来替换当前对象
call和apply的区别:apply只能接收数组,而call可以接收连续的参数
bind:创建一个新的函数,与call和apply不同的是,bind想什么时候调用就什么时候调用
ES6箭头函数里还会用到bind吗?为什么?箭头函数的this是怎么定义的?
会,因为在执行代码的时候,接受到的数据可能不止一个。另外再特定情况函数不需要立刻执行,而是在我需要数据的时候才执行。所以还需要使用bind
知道html语义化是啥不?html5都有哪些语义化标签?
头部标签<header> 导航标签<nav>页脚标签<footer>主要内容标签<mian>等等
了解闭包吗?说说你的理解
闭包形成的条件:函数嵌套外层函数、外部引用返回内部函数、内层使用外层变量
闭包的作用:形成不被销毁的执行空间,延长函数的生命周期,容易引起内存泄露
外部函数访问内部函数的变量,变量作用域扩展,内部函数访问外部函数
形成作用域私有变量