ES6新增:模板字符串、解构、set&&map、from、promise、default、类、reset

javascript正在向强类型进化。

模板字符串

var html = "<div>"+
                "<p>"+
                "</p>"+
                "<span>"+
                "</span>"+
            "</div>"
console.log(html);

let name = "zhar";
var str = `
        <div>
            <p>$(name)</p>
        </div>
        abc
        def
`;
console.log(str);

解构

  • 对象定义可以直接使用已有的变量。如果使用了没有定义的变量,则会抛出异常。这就是es6的解构,可以直接使用已有变量。
var name = "zhar";

var obj = {
    name : name
}

console.log(obj);

let age = 30;

let obj2 = {name,age};
console.log(obj2);

以上代码输出:
{ name: 'zhar' }
{ name: 'zhar', age: 30 }

let obj3 = {n,age};
console.log(obj3);

抛出:ReferenceError: n is not defined

  • 变量与对象定义可以混用
let obj4 = {nn:"2n",n,age};
console.log(obj4)
  • 可以使用这种方法直接声明变量
let obj5 = {name:"zhar",age:30}
let{name,age} = obj5;
console.log(name,age);
  • 可以在参数中使用
let obj5 = {name:"zhar",age:30}
let{name,age} = obj5;
console.log(name,age);
function fun({name,age,address}){
    console.log(name,age,address)
}
fun(obj5)

数组同样可以解构。

let obj = {
    name: "zhar",
    age:30
}
let{name,age} = obj;
let a = 10;
let b = 20;
let obj2 = {a,b};
let arr = [1,2,3];
let [d,e,f] = arr;
console.log(d,e,f);
let [g,[[h],i]] = [1,[[2],3]];
console.log(g,h,i)
let [j,,k] = [1,2,3];
console.log(j,k);

Set与map

set

set与Array类似,无重复元素,无length属性

构建方法

(1) let s = new Set([2,3,3,4,4,5]);
(2) let s2 = new Set();
s2.add(1);
add() 向集合添加元素,自动去掉重复元素
delete() 删除指定的元素
has() 判断集合是否包含指定元素
size() 得到集合的长度,去掉重复元素后的长度
clear() 清空集合

map

map集合类似于object,键值对。
map可以使用任意类型做键,哪怕是函数、对象。

let s = new Set([2,3,3,4,4,5]);
console.log(s,s.length);

let s2 = new Set();
    s2.add(1);
    s2.add(1);
    s2.add(2);
    s2.add(2);
console.log(s2,s2.size);
console.log(s2.has(1),s2.has(3));
s2.delete(1);
console.log(s2);
s2.clear();
// console.log(s2);

console.log(s.keys());
console.log(s.values());
console.log(s.entries());

let m = new Map();
m.set("name","zhar");
console.log(m);
console.log(m.get("name"));

let a = 10;
m.set(a,"abc");
console.log(m)

数组的扩展

Array.from()

function fun(){
    console.log(arguments);
    console.log(Array.from(arguments));
    let a = Array.from(arguments);
    a.push("d");
    console.log(a);
}
fun("a","b","c");

promise

var promise = new Promise(function(resolve,reject){
    if(!true){//表示异步操作成功
        resolve();
    }else{
        reject();
    }
});
promise.then(function(){
    console.log("成功")
},function(){
    console.log("失败")
});

Promise.all([promise1,promise2,...])全部异步函数执行完成后调用resolve
以最慢者为准。
Promise.race([promise1,promise2,...])竞赛模式,以最快者为准,只返回最快的异步结果

function sync1(){
   return new Promise(function(resolve,reject){
        setTimeout(function(){
            if(5>4){
                resolve("bigger");
            }else{
                reject("smaller");
            }
        },1000);
    })
}

 function sync2(result){
     return new Promise(function(resolve,reject){
         setTimeout(function(){
            if(true){
                resolve("异步二:true-");
            }else{
                reject("异步二:false");
            }
        },2000);
     })
 }

  function sync3(){
     return new Promise(function(resolve,reject){
         setTimeout(function(){
            if(true){
                resolve("异步三:true-");
            }else{
                reject("异步三:false");
            }
        },4000);
     })
 }
  sync1().then((res)=>{
    console.log(res);
    sync2();
   return sync2(res);
 },function(err){
    console.log(err);
 }).then(function(r2){
    console.log(r2)
    return sync3();
 }).then(function(rq3){
     console.log(rq3);
     return "abc";
 }).then(function(r4){
    console.log(r4);
     return "def";
 }).then(function(r5){
     console.log(r5);
 }).catch(function(){
     console.log("异常")
 });

默认值

function bar(a=0){
在参数里面让形参等于一个值,就相当于给它默认值。
    return a/5;
}
console.log(bar());
console.log(bar(10));

之前es5的继承:

function Person(){
    this.name = "abc";
}
Person.prototype.say = function(){
    console.log(this.name);
}
function student(){
    this.name = "x";
    Person.call(this);
}
student.prototype = new Person();

es6:

class Person{
    constructor(){
        this.age = 30;
        this.name = "jack";
    }
    say(name){
        console.log("你好:"+name + this.age);
    }
    say1(){

    }
}
class Student extends Person{
    constructor(age){
        super();
        this.age = age;
    }
}

let s = new Student(555);
s.say("小明");

在es6中继承的子类没有作用域环境,必须使用super()来继承父类的this环境,如果没有super(),会报如下错误:
ReferenceError: this is not defined

reset

使用“...”代表剩余参数

function fun(...a){
    console.log(a)
}
fun(2,3,4,5,55,8,7,9);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,671评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,442评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,524评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,623评论 1 275
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,642评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,584评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,953评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,621评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,865评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,608评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,698评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,378评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,958评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,940评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,173评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,419评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,425评论 2 342

推荐阅读更多精彩内容