笔试1
1 js改变数组数据及长度的方法有哪些?作用是什么?
arr.pop() : 删除数组最后一个元素,返回删除项
arr.push() : 在数组末尾添加一个或多个元素,返回数组新长度
arr.shift() : 删除数组的第一个元素,返回删除项
arr.unshift() : 在数组的第一项前面添加一个或多个元素,返回数组长度
2 如何将JSON字符串转为json 对象?
var str = '{ "name"="jack","age"="15"}'
var obj = str.parse.JSON() 或 obj = JSON,parse(str) //JSON字符串转对象
var str = JSON.stringify(obj) // 对象转 JSON字符串
3 JS实现Storage,使得该对象为单例,并对localStorage进行封装设置值setItem(key,value)和getItem(key)
var instance = null;
class Storage {
//前半句答案
static getInstance() {
if (!instance) {
instance = new Storage();
}
return instance;
}
//后半句答案
setItem = (key, value) => localStorage.setItem(key, value)
getItem = key => localStorage.getItem(key)
}
4 import 和 require 的区别?
遵循规范 : require 是 AMD规范引入方式
import是es6的一个语法标准,如果要兼容浏览器的话必须转化成es5的语法
调用时间 : require是运行时调用,所以require理论上可以运用在代码的任何地方
import是编译时调用,所以必须放在文件开头
本质 : require是赋值过程,其实require的结果就是对象、数字、字符串、函数等,再把require的结果赋值给某个变量
import是解构过程,但是目前所有的引擎都还没有实现import,我们在node中使用babel支持ES6,也仅仅是将ES6转码为ES5再执行,
import语法会被转码为require
5 一个对象数组 emps ,对象包含name和value属性,写个方法判断对象数组是否有name等于"jack"的项,包含返回1,不包含返回0
function isContain(){
for(let i = 0 ;i<emps.length;i++){
if(emps[i].name =="jack"){
return 1
}
}
return 0
}
6 vue生命周期,DOM元素的双向数据绑定在生命周期的什么时候生效
1 , beforeCreate
2 , created
3 , beforeMount
4 , mounted
5 , beforeUpdate
6 , updated
7 , beforeDestroy
8 , destroyed
DOM元素的双向绑定在 mounted 里生效
7 vue组件中的data为什么必须是一个函数?
因为组件是可以重复使用的,如果data 不是一个函数,而是一个属性的话,那么data 里的数据就相当于共享了,如果改变了一个引用组件的data 里的值
那么其它引用组件的data 里的值也会改变,而函数每个引用返回的都一个是新data 对象
8 vue中,父组件如何向子组件传值?子组件如何向父组件传值?父组件如何获取子组件内的值?平级组件间如何传值?
1,父向子传值:对引用子组件的标签绑定属性,子组件使用props接收
2 , 子向父传值:对引用子组件的标签绑定带入参的事件方法,子组件使用$emit调用父组件事件,将数据作为参数传递给父组件
3 , 父组件获取子组件内的值:给子组件设置设置ref名,使用this.$refs.【ref名】.data
4, 平级组件:利用平级组件的公共父组件做中间处理,结合子向父,父向子传值;或者使用vuex
9 写几个常用的css3特有属性
1 border-radius
2 box-shadow
3 animation
4 bankgroud
5 transform
6 opacity
10 bootstrap实现响应式布局的原理是什么
将网页等分,利用媒体查询,针对不同的屏幕尺寸做等分样式