前端面试题(二)

1.vue项目是打包成一个js文件,一个css文件,还是多个文件

根据vue-cli脚手架规范,一个js文件,一个cs文件

2.简述ajax原理

AJAX全称(Async Javascript and XML),即异步的JavaScript 和XML是一种创建交互式网页应用的网页开发技术,可以在不重新加载整个网页的情况下,与服务器交换数据,并且更新部分网页
Ajax的原理简单来说通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用JavaScript来操作DOM而更新页面

3.vue封装组件的过程

     首先,使用Vue.extend()创建一个组件(或者创建一个新vue页面,通过import导入页面)
     然后,使用Vue.component()方法注册组件
     接着,如果子组件需要数据,可以在props中接受定义
     最后,子组件修改好数据之后,想把数据传递给父组件,可以使用emit()方法

4.vue组件之间有几种通讯方式

    1.vuex
    2.eventBus
    3.props/emit
    4.$parent/$children
    5.$attrs/$listeners
    6.provide/inject

5.css水平,垂直居中的写法,请至少写出4种

水平居中如下:
行内元素: text-align: center
块级元素: margin: 0 auto
position:absolute +left:50%+ transform:translateX(-50%)
display:flex + justify-content: center

垂直居中如下:
设置line-height 等于height
position:absolute +top:50%+ transform:translateY(-50%)
display:flex + align-items: center
display:table+display:table-cell + vertical-align: middle;

6.说一下盒模型

所谓盒子模型(Box Model)就是把HTML页面中的元素看作是一个矩形的盒子,也就是一个盛装内容的容器。每个矩形都是由元素的内容(content)、内边距(padding)、边框(border)和外边距(margin)组成。
标准盒子模型
width就是content的内容,盒子的宽度是 content + padiing + border

IE盒子模型
width是content + padding + border这是三部分的宽度,盒子的宽度就是width

7.说一下<label>标签的用法

<label> 标签为 input 元素定义标签(label)。
label 元素不会向用户呈现任何特殊的样式。不过,它为鼠标用户改善了可用性,因为如果用户点击 label 元素内的文本,则会切换到控件本身。
<label> 标签的 for 属性应该等于相关元素的 id 元素,以便将它们捆绑起来。
1. 在html中,<label>标签通常和<input>标签一起使用,<label>标签为input元素定义标注(标记)
2.   格式: <label for="关联控件的id" form="所属表单id列表">文本内容</label>
3.label标签中关于文件上传的妙用,可覆盖inputfile样式以及同样有上传功能

8.用js递归方式写1到100求和

(注意:递归简单来说就是函数自己调用自己。)
function  fn1(n){
  //跳出条件
  if(n == 1) return 1
  //逻辑  n+n-1 的和
  return n+fn1(n-1)
}

console.log(fn1(100))

9.说一下事件代理

事件代理( Event Delegation ),⼜称之为事件委托。是 JavaScript 中常⽤绑定事 件的常⽤技巧。顾名思义,“事件代理”即是把原本需要绑定的事件委托给⽗元素,
让⽗元素担当事件监听的职务。事件代理的原理是DOM元素的事件冒泡。使⽤事件代理的好处是可以提⾼性能 ,可以⼤量节省内存占⽤,减少事件注册,⽐如在 table 上代理所有 td 的 click 事件就⾮常棒,可以实现当新增⼦对象时⽆需再次对其绑定

10.说一下继承的几种方式及优缺点

1. 原型链继承 优点:子类要继承自父类,则将父类的实例作为子类的原型实现继承。 缺点:1.原型继承无法传递参数2.给子类原型添加方法必须在子类原型替换之后
2. 借助构造函数  优点:在子类构造函数中调用父类构造函数。 缺点:1.子类无法访问到父类原型上的方法
3. 组合继承 优点:通过两种方式的优点组合使用两者。 缺点:1.父类被调用了两次,一次是为了实现属性继承,一次是为了实现方法继承。2.由于父类调用了两次,使得父类的属性会在子类实例上产生一份,并且在子类原型上再产生一份
4. 原型式继承 优点:为了不自定义类型也可以通过原型实现对象间信息的共享。 缺点:1.本质上,object()是对传入的对象执行了一次浅复制,由于浅复制只会对原始数据类型进行拷贝,对引用数值类型只是将内存地址进行拷贝
5. 寄生式继承 优点:创建一个实现继承的函数,在该函数内创建一个新对象,然后增强创建的对象,最后返回该对象。。 缺点:1.与原型式继承一样,存在引用类型值问题,同时寄生式继承中的增加方法时,是将方法挂载到实例上的,所以方法无法复用
6. 寄生组合式继承  优点:通过寄生式继承来继承父类原型,然后将返回的新对象赋值给子类原型。 缺点:1.这种方法只调用了一次父类,并且父类的属性不会像组合继承那样添加到子类的原型上去

(以上试题皆是我遇到的,答案可能错漏,建议有疑惑百度查一下)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值