参考网站:
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