1.类 class
ES6 中有 class 语法。值得注意是,这里的 class 不是新的对象继承模型,它只是原型链的语法糖表现形式。 函数中使用 static 关键词定义构造函数的的方法和属性:
class Animal {
constructor(color,age){
this.color = color;
this.age = age; }
yeil(){
alert("我大声咆哮");
}
}
class Cat extends Animal{
constructor(color,age,name){
super(color,age); //调用Animal构造函数constructor
this.name = name;
}
skill(){
alert("我超级会卖萌");
} }
// 实例化猫类
var c1 = new Cat("黄色",2,"kitty");
var c2 = new Cat("黑色",1,"可乐");
c1.skill();
c1.yeil();
2.模块化
在html中模块化引入js
1. 有http服务器
2. <script type="module">
export 导出
var name = "mumu";
export{name};
function say(){ alert('我喜欢'+name)}
export {say};
import 导入
<script type="module">
import {name,say} from './js/utils.js';
say();
</script>
导出默认
class Now{
constructor(arg) {
this.date = new Date().toLocaleString()
}
}
export default Now
导入默认 import Now from './js/utils.js';
alert(new Now().date)
3.set
数组去重
var s2 = new Set([1, 2, 3,2]); console.log(s2); // {1, 2, 3}
常用方法 add delete clear has size
let arr = [1,2,1,2,5,2,5];
arr =[...new Set(arr)]
console.log(arr)
WeakSet结构与Set类似,也是不重复的值的集合。 WeakSet的成员只能是对象,而不能是其他类型的值
ES6提供了Map数据结构。它类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键 var m = new Map([['Michael', 95], ['Bob', 75], ['Tracy', 85]]); 方法 set get delete clear has size WeakMap 就是一个 Map,只不过它的所有 key 都是弱引用,意思就是 WeakMap 中的东西垃圾回收时不考虑,使用它不用担心内存泄漏问题。 另一个需要注意的点是,WeakMap 的所有 key 必须是对象。没有size
4.for of
for in 循环用于遍历数组,类数组或对象,ES6中新引入的for of循环功能相似,不同的是每次循环它提供的不是序号而是值。
var arr1 = ["mumu","age","木木","曾庆林"];
for(v of arr1){ console.log(v); }
keys() 键集合
values() 值得集合
entries () 键和值得集合
for(k of arr1.keys()){ console.log(k); }
for(v of arr1.values()){ console.log(v); }
for([k,v] of arr1.entries()){ console.log(k,v); }
5.promise承诺
ES6 对 Promise 有了原生的支持,一个 Promise 是一个等待被异步执行的对象,当它执行完成后,其状态会变成 resolved 或者rejected。
promise 承诺
resolve 完成解决
reject 拒绝兑现
2s 后对控制台说 其实我观察你
3s 后对控制台说 很久了
5s 后对控制台说 我很中意你啊
function say(msg,time){
return new Promise((resolve,reject)=>{
setTimeout(()=>resolve(msg),time)
})
}
say('其实我观察你',2000)
.then(res=>{
console.log(res);
return say('很久了',3000)
})
.then(res=>{
console.log(res);
return say('我很中意你啊',5000)
})
.then(res=>{
console.log(res);
})
实现网络请求
function getApi(url){
return new Promise((resolve,reject)=>{
$.ajax({
url,
dataType:"jsonp",
success(res){resolve(res) },
error(err){reject(err)}
})
})
}