zoukankan      html  css  js  c++  java
  • ES6 一些常用使用

      1 //1、解构数组
      2         let arr1 = ['apple', 'coffee', 'cake'];
      3         let [fruit, drink, dessert] = arr1;
      4         console.log(fruit, drink, dessert);
      5         //2、解构对象
      6         let obj = {
      7             fruit: 'apple',
      8             drink: 'coffee',
      9             dessert: 'cake'
     10         };
     11         // 此键值对前面是对象中定义的属性,后面是定义的变量
     12         let {
     13             fruit: fruit1,
     14             drink: drink1,
     15             dessert: dessert1
     16         } = obj;
     17         console.log(fruit1, drink1, dessert1);
     18         // 3、模版字符串,可以自由的使用换行符
     19         let drink = 'coffee',
     20             fruit = 'apple',
     21             dessert = 'cake';
     22         let breakfast = `今天的早餐是 ${drink} 、
     23             ${fruit}和${dessert}`;
     24         console.log(breakfast);
     25         // 4、带标签的模版字符串
     26         let fruit = 'apple',
     27             drink = 'coffee',
     28             dessert = 'cake';
     29         let breakfast = kitchen`今天的早餐是
     ${fruit}、${drink}和${dessert}!`;
     30         // 用于对输入的内容的单独处理,例如在货币前面加上货币符号,或者对很大的数字进行相应的转换
     31         function kitchen(strings, ...values) {
     32             // stings 是个数组,包含的是摸板字符串中的已知字符串,他还有个 raw 属性包含的是 本身输入的原内容
     33             // console.log(strings);
     34             // console.log(values);
     35             let result = '';
     36             for (let i =0,len = values.length;i<len;i++) {
     37                 result += strings[i];
     38                 result += values[i];
     39             }
     40             result += strings[strings.length - 1];
     41             console.log(result);
     42         }
     43         // 5、判断字符串是否包含其他字符串,返回值均为布尔值
     44         // 字符串的新方法:startsWith() 是否是以...为开始
     45         // 字符串的新方法:endsWith() 是否是以...为结束
     46         // 字符串的新方法:includes() 是否是包含...
     47         let fruit = 'apple',
     48             drink = 'coofee',
     49             dessert = 'cake';
     50         let breakfast = `今天的早餐有${fruit}、${drink}、${dessert}!`;
     51         console.log(breakfast.startsWith('今天'));
     52         console.log(breakfast.endsWith('cake!'));
     53         console.log(breakfast.includes('tea'));
     54         // 6、函数的默认参数 Default Parameter Values
     55         function breakfast(dessert = 'cake', drink = 'coffee') {
     56             return `${dessert} ${drink}`;
     57         }
     58         console.log(breakfast());
     59         console.log(breakfast('icecream', 'beer'));
     60         // 7、展开操作符 spread
     61         let foods = ['cake', 'coffee'],
     62             fruit = 'apple';
     63         console.log(...foods);
     64         console.log(foods.join(' '));
     65         let allFoods = ['apple', ...foods];
     66         console.log(allFoods);
     67         // 8、剩余操作符 rest
     68         function breakfast(dessert, drink, ...foods) {
     69             // 除了dessert和drink之外剩下的传入的参数为被包含到 foods 数组里
     70             console.log(dessert, drink, foods);
     71         }
     72         breakfast('cake', 'coffee', 'tea', 'banana');
     73         // 9、解构参数
     74         function breakfast(dessert, drink, {location, name}={}) {
     75             console.log(dessert, drink, location, name);
     76         }
     77         breakfast('cake', 'cooffee', {location:'beijing', name:'cahtrine'});
     78         // 10、函数的名字 function 的 name 属性
     79         function breakfast() {}
     80         console.log(breakfast.name);
     81         let letBreakfast = function (){};
     82         console.log(letBreakfast.name);
     83         let newletBreakfast = function superBreakfast(){};
     84         console.log(newletBreakfast.name);
     85         // 11、箭头函数 arrow function
     86          //如果函数体只有一条return语句,可以简写成如下形式,该函数的返回值是 dessert
     87         let breakfast = dessert => dessert;
     88         // 等价于
     89         var breakfast = function breakfast(dessert) {
     90             return dessert;
     91         }
     92         //如果函数只有一个参数,则参数的括号可以省略;如果没有参数,则需要用空括号
     93         let drink = (Parameter1,Parameter2) => {
     94             //函数体 
     95         }
     96         // 12、对象表达式
     97         let dessert = 'cake',drink = 'coffee';
     98         let foods = {
     99             dessert,
    100             drink,
    101             breakfast() {}
    102         }
    103         // 13、对象的可计算属性名
    104         let food = {};
    105         let drink = 'hot drink';
    106         food[drink] = 'coffee';
    107         console.log(food);
    108         // 14、对比两个值是否相等 Object.is(Parameter1,Parameter2)
    109         console.log(+0 === -0);
    110         console.log(NaN == NaN);
    111         console.log(Object.is(+0, -0));
    112         console.log(Object.is(NaN, NaN));
    113         // 15、把对象复制到另一个对象里 Object.assign
    114         let breakfast = {},
    115             drink = {
    116                 drink: 'beer'
    117             }
    118         Object.assign(breakfast, drink);
    119         drink.drink = 'coofee';
    120         console.log(breakfast);
    121         console.log(drink);
    122         // 16、设置对象的 prototype,Object.setPrototypeOf()
    123         let breakfast = {
    124             getdrink() {
    125                 return 'coffee';
    126             }
    127         };
    128         let dinner = {
    129             getdrink() {
    130                 return 'tea';
    131             }
    132         };
    133         let drink = Object.create(breakfast);
    134         console.log(drink);
    135         console.log(drink.getdrink());
    136         console.log(Object.getPrototypeOf(drink) === breakfast);
    137         Object.setPrototypeOf(drink, dinner);
    138         console.log(drink.getdrink());
    139         console.log(Object.getPrototypeOf(drink) === dinner);
    140         // 17、可以直接设置对象的 __proto__
    141         let breakfast = {
    142             getdrink() {
    143                 return 'coffee';
    144             }
    145         };
    146         let dinner = {
    147             getdrink() {
    148                 return 'tea';
    149             }
    150         };
    151         let drink = {
    152             __proto__: breakfast
    153         };
    154         console.log(drink);
    155         console.log(drink.getdrink());
    156         console.log(Object.getPrototypeOf(drink) === breakfast);
    157         drink.__proto__ = dinner;
    158         console.log(drink);
    159         console.log(drink.getdrink());
    160         console.log(Object.getPrototypeOf(drink) === dinner);
    161         // 18、super
    162         let breakfast = {
    163             getdrink() {
    164                 return 'coffee';
    165             }
    166         };
    167         let sunday = {
    168             __proto__: breakfast,
    169             getdrink() {
    170                 return super.getdrink() + ' && milk';
    171             }
    172         };
    173         console.log(sunday.getdrink());
    174         // 19、手动创建迭代器 iterators
    175         // 迭代器特征:1、每次执行都会返回一个对像{value:value,done:true/false}
    176         // 迭代器特征:2、next 方法,每次执行它返回 1 中的对象
    177         // 在ES6 中 Generators 能够生成上述迭代器
    178         function chef(foods) {
    179             let i = 0;
    180             return {
    181                 next() {
    182                     let done = i >= foods.length? true : false;
    183                     let value = !done? foods[i++] : undefined
    184                     return {
    185                         value: value,
    186                         done: done
    187                     }
    188                 }
    189             }
    190         }
    191         let me = chef(['coffee', 'tea']);
    192         console.log(me.next());
    193         console.log(me.next());
    194         console.log(me.next());
    195         // 20、生成器 Generators
    196         function* chef(foods) {
    197             for(let i = 0,len = foods.length;i<len;i++) {
    198                 yield foods[i];
    199             }
    200         }
    201         let me = chef(['coffee', 'tea']);
    202         console.log(me.next());
    203         console.log(me.next());
    204         console.log(me.next());
    205         // 21、classes 类
    206          class chef {
    207              constructor(foods) {
    208                 //  类的初始值设置
    209                 this.foods = foods;
    210              }
    211              cook() {
    212                  console.log(this.foods);
    213              }
    214          }
    215          let me = new chef('egg');
    216          me.cook();
    217         // 22、get 和 set 
    218         class chef {
    219             constructor(foods) {
    220                 this.foods = foods;
    221                 this.dish = [];
    222             }
    223             get menu() {
    224                 return this.dish;
    225             }
    226             set menu(food) {
    227                 this.dish.push(food);
    228             }
    229             cook() {
    230                 console.log(this.foods);
    231             }
    232         }
    233         let me = new chef('egg');
    234         me.menu = '七分熟的牛排';
    235         me.menu = '西红柿炒鸡蛋';
    236         console.log(me.menu);
    237         // 23、类的静态方法 static,不需要实例化类,能够直接使用的方法
    238         class chef {
    239             static cook(food) {
    240                 console.log(food);
    241             }
    242         }
    243         chef.cook('egg');
    244         // 24、继承 extends
    245         class Person {
    246             constructor(name, birthday) {
    247                 this.name = name;
    248                 this.birthday = birthday;
    249             }
    250             confir() {
    251                 console.log(`${this.name} ${this.birthday}`);
    252                 console.log(1);
    253             }
    254         }
    255         class Chef extends Person {
    256             constructor(name, birthday) {
    257                 super(name, birthday);
    258             }
    259         }
    260         let me = new Chef('章三', '2016-01-01');
    261         me.confir();
    262         // 25、Set 元素不可重合,接收一个数组
    263         let drinks = new Set(['coffee','tea','bear']);
    264         // 添加 add
    265         drinks.add('colar');
    266         // Set不能有重复的项
    267         drinks.add('coffee');
    268         console.log(drinks);
    269         // 删除 delete
    270         drinks.delete('coffee');
    271         console.log(drinks);
    272         // 查看是否有 has
    273         console.log(drinks.has('colar'));
    274         // 查看有几项 size
    275         console.log(drinks.size);
    276         // 循环处理 forEach
    277         drinks.forEach(food => {
    278             console.log(food);
    279         });
    280         // 清空 clear
    281         drinks.clear();
    282         console.log(drinks);
    283         // 26、Map 对对象的扩展,使对象的key 可以是任何一个值
    284         let food = new Map();
    285         let fruit = {}, cook = function(){}, dessert = '甜点';
    286         // 添加 set
    287         food.set(fruit, 'apple');
    288         food.set(cook, '西红柿炒鸡蛋');
    289         food.set(dessert, 'cake');
    290         console.log(food);
    291         // 查看键对应的值 get
    292         console.log(food.get(fruit));
    293         console.log(food.get(function(){}));
    294         // 查看有几项 size
    295         console.log(food.size);
    296         // 删除 delete
    297         food.delete(fruit);
    298         // 是否有 has
    299         console.log(food.has(fruit));
    300         // 循环处理 forEach
    301         food.forEach((value, key) => {
    302             console.log(`${key} = ${value}`);
    303         })
    304         // 27、Object.keys()、Object.values() 获取对象的所有键/值
    305         const people= {
    306             name: 'zhangsan',
    307             sex: 'girl',
    308             age: '22'
    309         }
    310         console.log(Object.keys(people));
    311         console.log(Object.values(people));
    312         // 实现数组去重
    313         let arr = [1,2,2,1,4,5,7];
    314         let obj = {};
    315         arr.forEach(v => obj[v]=1);
    316         console.log(Object.keys(obj));
    317         // 28、Object.entries() 将键值对换成数组
    318         const people= {
    319             name: 'zhangsan',
    320             sex: 'girl',
    321             age: '22'
    322         }
    323         console.log(Object.entries(people));
    324         // 29、... 扩展运算符
    325         // 使用 ... 扩展符合并两个对象
    326         const peop1 = {name:'zhangsan', age:22};
    327         const peop2 = {name: 'lisi', sex: 'girl'};
    328         console.log({...peop1, ...peop2, date:'2018-0101'});
    329         // 数组去重
    330         let arr = [1,2,2,1,4,5,7];
    331         let newArr = [...new Set(arr)];
    332         console.log(newArr);
    333         // 30、ES6 的模块化
    334         // -------1.js-------------------------
    335         export const name='123'; // 暴露一个模块的内容
    336         exprot const fun = ()=>{console.log("hello")};
    337         // -------2.js-------------------------
    338         import {name, fun} from './1.js';//引入一个模块
    339         31、default
    340         // -------1.js-------------------------
    341         exprot default const test = ()=>{console.log('world')};
    342         // -------2.js-------------------------
    343         import abc form './1.js';
    344         abc(); //执行1.js中的 test方法
    345         32、模块化,用别名方式引用
    346         // -------1.js-------------------------
    347         export const name='123'; // 暴露一个模块的内容
    348         exprot const fun = ()=>{console.log("hello")};
    349         exprot default const test = ()=>{console.log('world')};
    350         // -------2.js-------------------------
    351         import * as mod1 from './1.js'
    352         console.log(mod1);
    353         // mod1 是个对象,包含了 1.js 中所有暴露的内容
    354         // 33、Array.from 从一个类似数组或者一个可迭代对象中创建一个新的数组实例
    355         console.log(Array.from({
    356             0:'zhangsan',
    357             1:'lisi',
    358             2:'wangwu',
    359             length:3
    360         }));
    361         // 实现数组去重
    362         var arr = [1,2,2,1,4,5,7];
    363         let newarrfun = (arr)=>{
    364             return Array.from(new Set(arr));
    365         }
    366         console.log(new Set(arr));
    367         console.log(newarrfun(arr));
    368         // // 第二个参数是新数组每一项执行的回调函数--可选
    369         let doubleArr = (arr) => {
    370             return Array.from(new Set(arr), v => v*2)
    371         }
    372         console.log(doubleArr(arr));
    373         // 第三个参数是执行回调函数时指定的 this 对象--可选
  • 相关阅读:
    系统设计5:Google三剑客
    lintcode亚麻九题
    设计模式17:单例模式
    设计模式16:迭代器模式
    设计模式15:组合模式
    476. Number Complement
    561. Array Partition I
    627. Swap Salary
    617. Merge Two Binary Trees
    728. Self Dividing Numbers
  • 原文地址:https://www.cnblogs.com/z-one/p/8870855.html
Copyright © 2011-2022 走看看