面试题目总结
- const var let 区别,const 定义的对象 能改变属性吗?
- 如何实现继承,prototype
- 如何获取dom元素
- react、vue的区别,如果有一个大型项目,你会选择哪种技术类型,以及为什么? 分析性能、维护等
- vue的各种生命周期,页面加载完在哪个生命周期;
- vue的路由守卫
- 打包怎么更小,dsn、代码压缩、sourcemap
- 页面局部更新,key,nexttick的异步回调
- 如何组件间传值的方式
- 自定义指令;
- 函数
- 普通函数在定义的时候this是不确定指向谁的,在使用的时候this才确定。
- 箭头函数在定义的时候就已经确定下来了this指向谁。this的指向跟上层作用域的this指向相同。
- 什么是闭包
- 一个嵌套的内部(子)函数引用了嵌套的外部(父)函数的变量(函数)时, 就产生了闭包,闭包就是函数里面的函数,闭包可以让函数外部能操作函数里面的数据。
function fn1() {
var a = 2;
function fn2() {
a++;
console.log(a);
}
return fn2;
}
var f = fn1(); // 一个函数,这时候已经产生了闭包
f(); // 3
f();
13、es6 Map类型数据
var jjj=new Map();
jjj.set(-1,'dsfsd');
jjj.set(-2,'lkk')
jjj.set(-3,'vfffsd');
jjj
输出:Map(3) {-1 => 'dsfsd', -2 => 'lkk', -3 => 'vfffsd'}[[Entries]]0: {-1 => "dsfsd"}1: {-2 => "lkk"}2: {-3 => "vfffsd"}size: 3[[Prototype]]: Map
jjj.size
输出:3
jjj.has(-3)
输出:true
jjj.has(-4)
输出:false
jjj.get(-2)
输出:'lkk'
jjj.keys()
输出:MapIterator {-1, -2, -3}
把Map数据转成Array数据:Array.from(jjj);
定义Map数据:const m = new Map([
["key1", "val1"],
["key2", "val2"],
["key3", "val3"]
]);
把Map数据转成Array数据:[...jjj]
for (const tt of jjj) {console.log('ttt',tt)}
for (const [skey, svalue] of jjj) {console.log('skey',skey)};
var allEnergyMap = new Map();
for (const [skey, svalue] of secondResMap) {
var totalEnergy = (svalue || []).reduce((result, ele) => {
var energyData = ele.energyData || 0;
result = result + energyData;
return result;
}, 0);
allEnergyMap.set(skey, totalEnergy);
}