理解の深化

4954 ワード

一、smbol
javascript基本データタイプ:null、undefined、number、bollan、string、smbol ES 6は新しい原始データタイプSymbolを導入し、ユニークな値を表しています.
let s = Symbol();

typeof s
// "symbol"
二、セットとMap
1、セット()
は、s 6が提供する新しいデータ構造であり、配列と似ていますが、set内のデータは一意性を持っています.
const s = new Set();
Setのインスタンスの属性と方法
let set = new Set([1, 2, 3, 4, 4]);
//       
set.size //5

//    
set.add(value) //     ,      
set.delete(value)  //     ,       
set.has(value) //       ,     set  
set.clear() //      ,    

//    
keys(),values(),entries()
//  :Set       ,    ,  keys(),values()       
2、Map()
Mapデータ構造は、オブジェクトと似ていますが、キーの範囲は文字列に限定されず、様々な種類の値(オブジェクトを含む)になります.
let map = new Map();
let obj = {msg:'hello'}

//map      (         )
map.set(obj, 'content')
map.set('key', 'value')
map.get(obj) //'content'

//size   
map.size //2

//       ,           Map     
map.has(obj)  //true

//     ,  true。      ,  false
map.delete(obj) //true

//      ,     。
map.clear()

//    
keys(),values(),entries()
// :Map            
三、プロミス
非同期プログラミングの解決策であり、複数の非同期要求の実行順序などを処理することができる.
//    
let p1 = function(){
    return new Promise((resolve,reject)=>{
        //    1,    resolve  ,    reject  
    })
}
let p2 = function(){
    return new Promise((resolve,reject)=>{
        //    2,    resolve  ,    reject  
    })
}

p1.then((data)=>{
    console.log('     ')
},(err)=>{
    console.log('     ')
})

//Promise.all        Promise   ,        Promise   
let p = Promise.all([p1,p2])
p.then((data)=>{
    //      resolve  
}).catch((err)=>{
    //          
})
四、Generator関数とasync関数
1、Generator関数
ES 6が提供する非同期プログラミングソリューションの操作は煩雑で、nextメソッドを手動で呼び出す必要があります.
function* test(){
    yield 'hello'; //yield              
    yield 'world';
        ...
}

let result = test();
console.log(result.next()); // { value: 'hello', done: false }
console.log(result.next()); // { value: 'world', done: false }
console.log(result.next()); // { value: undefined, done: true }
2、async関数(s 7)
これはGenerator関数のシンタックス糖async関数がPromiseオブジェクトに戻ります.then法を使ってコールバック関数を追加できます.
function timeout(ms) {
  return new Promise((resolve, reject) => {
    setTimeout(resolve, ms, "finish");
  });
}
async function asyncTimeSys(){
    await timeout(1000);
    console.log("       !")
    await timeout(1000);
    console.log("       !")
    await timeout(1000);
    console.log("       !")
    await timeout(1000);
    console.log("       !")
    await timeout(1000);
    console.log("       !")
    return "all finish";
}
asyncTimeSys().then((value)=>{
    console.log(value);
});
五、クラス類
クラスのキーワードでクラスを定義できます.
1、基本的な使い方
//es6     (    )
function Person(name,age){
    this.name = name;
    this.age = age;
}
let student = new Person('  ',18);
//      
Person.prototype.say = function(){
    return this.name +'  '+ this.age;
}
console.log(student.say()) //    18

//  class   
class Person {
    //    ,    Person.type   
    static type = '   ';
    //    ,  Person.eat()  
    static eat(){
        console.log('   ');
    }

    //         
    constructor(name,age){
        this.name = name;
        this.age = age;
    }
    //      
    say(){
        return this.name +'  '+ this.age
    }
}
let student = new Person('  ',18)
console.log(student.say()) //    18
2、クラスの継承
extendsのキーワードで継承が可能です.
class Person {
    constructor(name){
        this.name = name;
    }
    say(){}
}

class Teachaer extends Person{
    constructor(name,job){
        super(name); //    this,       super  ,
        this.job = job;
    }
    work(){
        return `${this.name}    ${this.job}`;
    }
}
let xiaoming = new Teachaer('  ','  ')
console.log(xiaoming .work()) //        
六、Module文法
ES 6は前にすでにjsモジュールのロードの方案が現れています.最も主要なのはCommon JS(サーバ端に使用されるもの、nodeJSなど)とAMD仕様(ブラウザに使用されるもの、例えばrequireJS)です.
1、export導出
exportは、本モジュール(一つのファイルは一つのモジュールとして理解できる)変数を外部に出力するためのインターフェースです.
//1、       
//      
export var name = "  ";
export var age = 18;
//    
export function say(){}
//   
export class Person{}

//2、      
let a = 1;
let b = 2;
let c = 3;
export { a, b, c }
//          a、b、c     export  ,           a、b、c                    
2、import導入
importは、もう一つのモジュールにexportインターフェースを含むモジュールをロードするために使用されます.
//1、      
import * as items from '    '
// :*     ,as     

//2、      
import { a, b } from '    '
3、export defaultはデフォルトメンバーをエクスポートします.
モジュールは一つしかありません.export defaultは一つしかありません.
var name = '  '
export default name;

//  default  
import name from '    '