let ,const
let 定义变量 const 定义常量
不能重复定义
块级作用域
不存在变量提升
模板字符串
//循环嵌套
let names = ['jimi','felly','allen'];
let str=`
<ul>
${
names.map(name=>`<li>${name}<li/>`).join('')
}
<ul/>
`
Promise
Promise 结构
new Promise((resolve, reject) => {
//异步函数
$.ajax({
url: '',
type: 'post',
success(res) {
resolve(res);
},
error(err) {
reject(err)
}
})
}).then((res) => {
//resolve 成功
console.log('success', res);
}, (err) => {
//reject 失败
console.log('error', err);
});
Promise 链式
var promiseFn1 = new Promise((resolve, reject) => {
$.ajax({
url: 'url-1',
type: 'post',
success(res) {
resolve(res);
},
error(err) {
reject(err)
}
})
})
var promiseFn2 = new Promise((resolve, reject) => {
$.ajax({
url: 'url-2',
type: 'post',
success(res) {
resolve(res);
},
error(err) {
reject(err)
}
})
})
promiseFn1.then(() => {
//promiseFn1 success
return promiseFn2
}, () => {
//promiseFn1 error
}).then(() => {
//promiseFn2 success
})
面向对象-类
关键词 class
语法糖 对应 function
构造函数 constructor
类的继承
extends:类的继承
super :调用父类的构造函数
面向对象-对象
对象里属性的简写
对象里方法的简写
属性名可以为表达式
// class constuctor
class Animal {
constructor(name) {
this.name = name
}
getName() {
return this.name
}
}
let animal = new Animal('animal test');
console.log(animal.getName());
//类的继承
class Animal{
constructor(){
this.name = 'animal'
}
getName(){
return this.name
}
}
class Cat extends Animal{
constructor(){
super()
this.name = 'cat'
}
}
let animal = new Animal();
let cat = new Cat();
console.log(animal.getName())
console.log(cat.getName())
//对象用法
/*js*/
var name = 'viking',
age = 18;
var obj = {
name: name,
age: age,
getName: function() {
return this.name
},
getAge: function() {
return this.age
}
}
/*ES6*/
let name = 'viking',
age = 18;
let obj = {
name,
age,
getName() {
return this.name
},
//表达式作为属性名
['get' + 'Age']() {
return this.age
}
}
Object.keys(obj); //获取Object 内所有属性名称
Object.assign({
a: 1
}, {
b: 2
})
//打印出 {a:1,b:2}
ES6模块化
export 模块输出
import 模块引入
html
<script type="module" src="./index.js"></script>