es6面试考点

参考网站:

Module 的语法(import,import(),export,AMD, CommonJS )

https://blog.csdn.net/juse__we/article/details/88937220

class及class的继承,prototype.与__proto__的概念,mixin的实现

https://blog.csdn.net/juse__we/article/details/89226464

对promise的理解:
https://blog.csdn.net/juse__we/article/details/88900685

iterator(迭代器):

https://blog.csdn.net/juse__we/article/details/88912579

generator(生成器):

https://blog.csdn.net/juse__we/article/details/88912300

异步遍历器(iterator)和异步生成器(generator)

https://blog.csdn.net/juse__we/article/details/104288194


关于async的理解:

https://blog.csdn.net/juse__we/article/details/88903608
在vue 里面的异步(axios)

https://blog.csdn.net/juse__we/article/details/88795582

Proxy

https://blog.csdn.net/juse__we/article/details/104239817

Reflect

https://blog.csdn.net/juse__we/article/details/104253737


5.ES6新增的类型(map,set )

https://blog.csdn.net/juse__we/article/details/88930457

7.操作日期的API
代码:(常用的就这几个)
let TheDay=new Date();
let year=TheDay.getFullYear();
let mounth=('00'+(TheDay.getMonth()+1)).slice(-2);
let day=('00'+TheDay.getDate()).slice(-2);
console.log(year+'-'+mounth+'-'+day)

//获取今天星期几
let weekend=['星期日','星期一','星期二','星期三','星期四','星期五','星期六']
console.log( TheDay.getDay(),weekend[TheDay.getDay()])
8.切割字符串的使用
let str='hello world';
console.log(str.slice(-2))
9.你开发过vue的插件吗
官方的流程:
https://cn.vuejs.org/v2/guide/plugins.html
自己写vue插件的流程
    1.main.js
        1.导入vue的插件文件
            import Loading from '/loading'   //loading 目录下面有index.js文件   
        2.显式的全局引用插件:
            Vue.use(Loading)
        3.不需要注入子组件    
    2.在子组件里面引用:
           //直接使用好像就可以    
    3.插件的写法:
        1.插件模板的写法:./loading.vue  --vue文件
            正常的组件写法:
               
               
               
        2.在loading文件夹下面index.js
            1.引入vue的模板文件
                import LoadingComponent from './loading'
            2.核心部分,在使用Vue.use()的时候,自动调用install
                const Loading={
                    install:function(Vue){
                        Vue.component('loading',LoadingComponent)   // loading就是插件名 随便起 
                    }
                }
            3.导出组件 
                export default Loading

11,遍历对象的方法
for in 不要使用for of + object.keys(obj)
12.数组和对象解构
let {a,d}={a:12,d:[13,14]}
还有就是  ... 的使用
代码:
function add(...arr) {
  console.log(arr);
  console.log(arguments);
  //arguments  不是数组的,不可以使用数组的方法的

}
add(1,2,3,4,5,6,7,8);
13.模板字符串的使用
代码:
var c=` ${a+d}======${ b }===${++a}

  hello

  world
`;
理解:
` ${ 写计算  } 
在里面,字符串是可以随便换行的

14.ES6  对于 数组,字符串的扩展
https://www.haorooms.com/post/es6_string_object_array
这个之前也是学过的,但是 基本都忘了   mmp ...
16.vue 的传值
1.使用父子组件传值
2.使用vuex
3.使用bus 来进行传值
https://juejin.im/post/5a4353766fb9a044fb080927
17.事件的委托
事件捕获--->目标对象---->向上冒泡
18.vuex的实现原理
就是那张图

19.谈谈你对vue的理解
mvvm
vue的生命周期

生命周期的理解:
vue的说明周期
    beforeCreate:创建之前
        这个阶段数据是读不到的,时间段,刚调用初始化函数  new...
    created:创建之后
        完成了数据观测,属性和方法的运算,但是没有挂在$el
        所以没有渲染在DOM树上,
        初始化完成....
    beforeMounted:安装之前
        挂载之前调用,在之前,寻找编译的模板和虚拟挂在节点
        在他之前,执行的动作
            1.找el:"'或者vm.$mount(""),确定虚拟挂在点
            2.找template或者 直接找外部的挂载点,确定挂在位置
    mounted:安装之后
        在此之前,执行的动作:
            el选项的节点,被$el代替(挂在到了DOM树上),已经挂载完成(渲染完毕)
            数据被渲染了,render(第一次)执行完毕
    beforeUpdate:更新之前
        有数据更新的时候,立即触发:
            不进行DOM的渲染,执行时间,当有数据更新之后,立马执行
    updated:更新之后
        绑定的数据进行更新(渲染),并且渲染DOM
        之前的动作:
            虚拟DOM的渲染和关在完成
    beforedestroy:销毁之前
        实例销毁之前,调用销毁函数,但没有执行销毁函数
        调用销毁函数,立即执行:
            在此之前,销毁函数被调用
    destroy:销毁之后
        在这个事件点之前:
            VUE实例销毁
            数据,方法,组件..的解绑
            
================================
        生命周期阶段,实例生命中的是时间点,在这个时间点执行函数
        
        mounted:function(){
            ................
        }
        
20.web socket的理解
https://mp.weixin.qq.com/s?__biz=MjM5MTA1MjAxMQ==&mid=2651227675&idx=1&sn=024b01082bef3b344edcca5f92bafb55&chksm=bd495f9f8a3ed689dc585d0a27f42dd5c787e974da2a5f22938f8a32de1b43c739f49b1b399a&scene=0#rd
21, https协议的理解
https://mp.weixin.qq.com/s?__biz=MzAwNDcyNjI3OA==&mid=2650840874&idx=1&sn=d2fe0b2f1efa77f79c28e380fd221ceb&chksm=80d3b443b7a43d55cc9437b2c3bd3b46c121acb0eb21c57f4ce08578e21d1788306b0c7a3aa3&scene=0#rd
TCP连接,http,https,udp,webSocket  ...
22.web woker
https://mp.weixin.qq.com/s?__biz=MzI1ODE4NzE1Nw==&mid=2247486700&idx=1&sn=9ed4fb635f55002bab7f322eb753bc17&chksm=ea0d4616dd7acf009cddea635890c8586e5a9cab9fe0e6b16925bd54f496a884dd685677df2b&scene=0#rd
23.谈谈你对const 和let 的理解
const (常量标识):
初始化,必须赋值  
常量的名称 默认为大写
常量不可以再次被修改的(否则,直接报错)
let:
js 函数的作用域问题
let是块级作用域,不进行声明提前
代码:(比较这两者的区别 )
使用var 变量的声明提前
{
    console.log(str)  // hello world
    var str = 'hello world'
}
使用let 直接报错,没有声明提前,就没有定义这块内存
{
    console.log(str) // undefined
    let str = 'hello word';
}
还有:
let 声明一个变量,在同一个作用域里面 ,只能声明一次
否则报错:
Uncaught SyntaxError: Identifier 'str' has already been declared
下面的写法,是可以的  因为他们不是一个作用域
let a = '666'

function fun() {
    let a = '777'
    console.log(a)
}

fun();
24, 变量提升的理解(hoisting)
1.变量提升只是提升变量的声明,并不会把赋值也提升上来。
代码测试:
bar();
var foo = 1;
function bar() {
    console.log(foo)   //undefind
    if (!foo) {
        var foo = 10;
    }
    console.log(foo);  //打印10
}
理解:
function 变量名 (){   }    可以进行声明提升
2.先提升函数  ,之后提升使用var  声明的变量;
foo();   //输出1
function foo() {    //先提升函数(函数整个提升)
    console.log('1');
}
var foo = function () {    //提升变量 var foo;  之后的函数不会被提升的
    console.log('2');
}
foo();    //输出2

你可能感兴趣的:(es6面试考点)