普歌-飛靈團隊-ES6匯總

一、let

<font size=4>let 關(guān)鍵字用來聲明變量,使用 let 聲明的變量有幾個特點:</font>

  1. 不允許重復(fù)聲明
  2. 塊兒級作用域
  3. 不存在變量提升(不允許在聲明變量前使用)
  4. 不影響作用域鏈

應(yīng)用場景:以后聲明變量使用 let 就對了

二、const

const 關(guān)鍵字用來聲明常量,const 聲明有以下特點:

  1. 必須要賦初始值
  2. 一般常量使用大寫(潛規(guī)則)
  3. 不允許重復(fù)聲明
  4. 常量的值不能修改
  5. 塊兒級作用域

ps:對于對象屬性和數(shù)組元素的修改, 不算做對常量的修改, 不會報錯

應(yīng)用場景:聲明對象或數(shù)組類型使用 const,非對象數(shù)組類型聲明選擇 let

三、變量的解構(gòu)賦值

ES6 允許按照一定模式,從數(shù)組和對象中提取值,對變量進行賦值,稱為解構(gòu)賦值。

// 數(shù)組的解構(gòu)賦值
const xhd = ['蘇有朋', '吳奇隆', '陳志朋'];
let [ su, wu, chen ] = xhd;
// 對象的解構(gòu)賦值
const guo = {
        name: '郭德綱',
        age: '47',
        xiangsheng: function () {
            console.log("我可以說相聲");
        }
    };
let { name, age, xiangsheng } = guo;
xiaopin();

ps:頻繁使用對象方法、數(shù)組元素,可以使用解構(gòu)賦值

四、模板字符串

模板字符串是增強版的字符串,用反引號(`)標識,特點有:

  1. 字符串中可以出現(xiàn)換行符
// 定義字符串
 let str = `<ul>
           <li>沈騰</li>
           <li>瑪麗</li>
           <li>魏翔</li>
           <li>艾倫</li>                
           </ul>`;
  1. 變量拼接
let lovest = '無情';
let out = `${lovest}哈拉少!!`;

<font size=5 face="黑體">ps:當遇到字符串與變量拼接的情況使用模板字符串</font>

五、簡化對象寫法

ES6 允許在大括號里面,直接寫入變量和函數(shù),作為對象的屬性和方法。這樣的書寫更加簡潔。

let name = '騰訊游戲';
let change = function(){
    console.log('沒錢玩?zhèn)€錘子!!');
}

const school = {
    name,
    change,
    pay(){
        console.log("充錢使你更強");
    }
}

<font size=4 face="黑體">總之,簡寫就對了</font>

六、箭頭函數(shù)

ES6 允許使用 箭頭(=>)定義函數(shù)

// 格式
let fn = (a,b) => {
     return a + b;
}
// 調(diào)用函數(shù)
let result = fn(1, 2);

注意點:

  1. this 是靜態(tài)的. this 始終指向函數(shù)聲明時所在作用域下的 this 的值
  2. 不能作為構(gòu)造實例化對象
  3. 不能使用 arguments 變量
  4. 如果形參只有一個,則小括號可以省略
let fn2 = num => {
 return num * 10;
};
  1. 代碼體如果只有一條語句,則大括號可以省略,return 必須省略,函數(shù)的返回值為該條語句的執(zhí)行結(jié)果
let pow = n => n * n;

<font size=4 face="黑體">ps:箭頭函數(shù)不會更改this指向,用來指定回調(diào)函數(shù)會非常合適</font>

七、rest 參數(shù)

ES6 引入 rest 參數(shù),用于獲取函數(shù)的實參,用來代替 arguments

    // ES5 獲取實參的方式
    function date(){
        console.log(arguments);
    }
    date('giao','嗷力給','淦');

    // rest 參數(shù)
    function date2(...args){
        console.log(args);// filter some every map
    }
    date2('giao','嗷力給','淦');

    // rest 參數(shù)必須要放到參數(shù)最后
    function fn(a,b,...args){
        console.log(a);
        console.log(b);
        console.log(args);
    }
    fn(1,2,3,4,5,6);

<font size=4 face="黑體">ps:rest參數(shù)非常適合不定個數(shù)參數(shù)函數(shù)的場景</font>

八、擴展運算符

『...』 擴展運算符能將數(shù)組轉(zhuǎn)換為逗號分隔的參數(shù)序列,對數(shù)組進行解包,好比 rest 參數(shù)的逆運算

// 展開數(shù)組
 const she = ['Selina','Hebe','Ella'];
 function superstar(){
    console.log(arguments);
 }

 superstar(...she);// chunwan('Selina','Hebe','Ella')

 // 1. 數(shù)組的合并
 const kuaizi = ['王太利','肖央'];
 const fenghuang = ['曾毅','玲花'];
 // ES5數(shù)組合并
 // const zuixuanxiaopingguo = kuaizi.concat(fenghuang);
 const zuixuanxiaopingguo = [...kuaizi, ...fenghuang];

 // 2. 數(shù)組的克隆
 const tuhai = ['8','5','7'];
 const sanyecao = [...tuhai];//  ['8','5','7']

 //3. 將偽數(shù)組轉(zhuǎn)為真正的數(shù)組
 const divs = document.querySelectorAll('div');
 const divArr = [...divs];

九、Symbol

  1. 基本使用
      ES6 引入了一種新的原始數(shù)據(jù)類型 Symbol,表示獨一無二的值。
      它是JavaScript 語言的第種數(shù)據(jù)類型,是一種類似于字符串的數(shù)據(jù)類型。
    特點:
    ?。ǎ保㏒ymbol的值是唯一的,用來解決命名沖突的問題
    ?。ǎ玻㏒ymbol值不能與其他數(shù)據(jù)進行運算
    ?。ǎ常㏒ymbol定義的對象屬性不能使用for…in循環(huán)遍歷,但是可以使用Reflect.ownKeys 來獲取對象的所有鍵名
  // 創(chuàng)建Symbol
   let s = Symbol();
   // console.log(s, typeof s);
   // 添加標識的Symbol
   let s2 = Symbol('嘿嘿嘿');
   let s3 = Symbol('嘿嘿嘿');
   // Symbol.for創(chuàng)建
   let s4 = Symbol.for('啦啦啦');
   let s5 = Symbol.for('啦啦啦');

<font size=4 >ps:遇到唯一性的場景時要想到 Symbol</font>

<font size=5 face="黑體">Symbol向?qū)ο笾刑砑訉傩院头椒ǖ姆绞?lt;/font>

    // 向?qū)ο笾刑砑臃椒?up down
    let game = {
        name:'俄羅斯方塊',
        up: function(){},
        down: function(){}
    };

    // 聲明一個對象
    let methods = {
        up: Symbol(),
        down: Symbol()
    };

    game[methods.up] = function(){
        console.log("我可以改變形狀");
    }

    game[methods.down] = function(){
        console.log("我可以快速下降!!");
    }
    // 調(diào)用
    game[methods.up]();
    game[methods.down]();
    let youxi = {
         name:"狼人殺",
         [Symbol('say')]: function(){
             console.log("我可以發(fā)言")
         },
         [Symbol('zibao')]: function(){
             console.log('我可以自爆');
         }
     }
  1. Symbol 內(nèi)置值

    除了定義自己使用的 Symbol 值以外,ES6 還提供了 11 個內(nèi)置的 Symbol 值,指向語言內(nèi)部使用的方法,它們會在特定的場景下自動執(zhí)行。

Symbol值 介紹
Symbol.hasInstance 當其他對象使用 instanceof 運算符,判斷是否為該對象的實例時,會調(diào)用這個方法
Symbol.isConcatSpreadable 對象的 Symbol.isConcatSpreadable 屬性等于的是一個布爾值,表示該對象用于 Array.prototype.concat()時,是否可以展開。
Symbol.species 創(chuàng)建衍生對象時,會使用該屬性
Symbol.match 當執(zhí)行 str.match(myObject) 時,如果該屬性存在,會調(diào)用它,返回該方法的返回值
Symbol.replace 當該對象被 str.replace(myObject)方法調(diào)用時,會返回該方法的返回值
Symbol.search 當該對象被 str.search (myObject)方法調(diào)用時,會返回該方法的返回值
Symbol.split 當該對象被 str.split(myObject)方法調(diào)用時,會返回該方法的返回值
Symbol.iterator 對象進行 for...of 循環(huán)時,會調(diào)用 Symbol.iterator 方法,返回該對象的默認遍歷器
Symbol.toPrimitive 該對象被轉(zhuǎn)為原始類型的值時,會調(diào)用這個方法,返回該對象對應(yīng)的原始類型值
Symbol. toStringTag 在該對象上面調(diào)用 toString 方法時,返回該方法的返回值
Symbol. unscopables 該對象指定了使用 with 關(guān)鍵字時,哪些屬性會被 with環(huán)境排除

十、迭代器

迭代器就是一種機制。它是一種接口,為各種不同的數(shù)據(jù)結(jié)構(gòu)提供統(tǒng)一的訪問機制。任何數(shù)據(jù)結(jié)構(gòu)只要部署 Iterator 接口,就可以完成遍歷操作。
 ?。?)ES6 創(chuàng)造了一種新的遍歷命令 for...of 循環(huán),Iterator 接口主要供 for...of 消費
      (for..in遍歷保存鍵名,for..of遍歷保存鍵值)
  (2)原生具備 iterator 接口的數(shù)據(jù)(可用 for of 遍歷)

  • . Array
  • Arguments
  • Set
  • Map
  • String
  • TypedArray
  • NodeList
    (3)工作原理
     ?。? 創(chuàng)建一個指針對象,指向當前數(shù)據(jù)結(jié)構(gòu)的起始位置
      2. 第一次調(diào)用對象的 next 方法,指針自動指向數(shù)據(jù)結(jié)構(gòu)的第一個成員
      ?。? 接下來不斷調(diào)用 next 方法,指針一直往后移動,直到指向最后一個成員
       4.每調(diào)用 next 方法返回一個包含 value 和 done 屬性的對象
   // 聲明一個數(shù)組
   const xiyou = ['唐僧','孫悟空','豬八戒','沙僧'];

   // 創(chuàng)建一個指針對象
   let iterator = xiyou[Symbol.iterator]();

   // 調(diào)用對象的next方法
   console.log(iterator.next());
   console.log(iterator.next());
   console.log(iterator.next());
   console.log(iterator.next());
   console.log(iterator.next());

自定義遍歷數(shù)據(jù)

    //聲明一個對象
    const banji = {
        name: "giao",
        stus: [
            'yahou',
            'zmsn',
            'huohua',
            'nosmoking'
        ],
        [Symbol.iterator]() {
            //索引變量
            let index = 0;
            return {
                next: () => {
                    if (index < this.stus.length) {
                        const result = {value: this.stus[index], done: false};
                        //下標自增
                        index++;
                        //返回結(jié)果
                        return result;
                    } else {
                        return {value: undefined, done: true};
                    }
                }
            };
        }
    }

    //遍歷這個對象
    for (let v of banji) {
        console.log(v);
    }

十一、生成器

生成器函數(shù)是 ES6 提供的一種異步編程解決方案,語法行為與傳統(tǒng)函數(shù)完全不同,是一種特殊的函數(shù)。

        function * gen(){
            // console.log(111);
            yield '一只沒有耳朵';
            // console.log(222);
            yield '一只沒有尾部';
            // console.log(333);
            yield '真奇怪';
            // console.log(444);
        }

        let iterator = gen();
        console.log(iterator.next());
        console.log(iterator.next());
        console.log(iterator.next());
        console.log(iterator.next());

        //遍歷
        // for(let v of gen()){
        //     console.log(v);
        // }

說明:

  1. ** 的位置沒有限制
  2. 生成器函數(shù)返回的結(jié)果是迭代器對象,調(diào)用迭代器對象的 next 方法可以得到 yield 語句后的值
  3. yield 相當于函數(shù)的暫停標記,也可以認為是函數(shù)的分隔符,每調(diào)用一次 next方法,執(zhí)行一段代碼
  4. next 方法可以傳遞實參,作為 yield 語句的返回值
// 生成器函數(shù)參數(shù)
 function * gen(arg){
       console.log(arg); // AAA
       let one = yield 111;
       console.log(one); // BBB
       let two = yield 222;
       console.log(two); // CCC
       let three = yield 333;
       console.log(three); // DDD
 }
 
 //執(zhí)行獲取迭代器對象
 let iterator = gen('AAA');
 console.log(iterator.next());
 //next方法可以傳入實參
 console.log(iterator.next('BBB'));
 console.log(iterator.next('CCC'));
 console.log(iterator.next('DDD'));

十 二、Promise

Promise 是 ES6 引入的異步編程的新解決方案。語法上 Promise 是一個構(gòu)造函數(shù),用來封裝異步操作并可以獲取其成功或失敗的結(jié)果,解決回調(diào)地獄。

//實例化 Promise 對象
const p = new Promise(function(resolve, reject){
    setTimeout(function(){
        //
        let data = '數(shù)據(jù)庫中的用戶數(shù)據(jù)';
        resolve(data);

        // let err = '數(shù)據(jù)讀取失敗';
        // reject(err);
     }, 1000);
});

//調(diào)用 promise 對象的 then 方法
p.then(function(value){
     console.log(value);
}, function(reason){
     console.error(reason);
})

Promise封裝讀取文件

//1. 引入 fs 模塊
const fs = require('fs');

//2. 調(diào)用方法讀取文件
// fs.readFile('./resources/為學(xué).md', (err, data)=>{
//     //如果失敗, 則拋出錯誤
//     if(err) throw err;
//     //如果沒有出錯, 則輸出內(nèi)容
//     console.log(data.toString());
// });

//3. 使用 Promise 封裝
const p = new Promise(function(resolve, reject){
    fs.readFile("./resources/為學(xué).md", (err, data)=>{
        //判斷如果失敗
        if(err) reject(err);
        //如果成功
        resolve(data);
    });
});

p.then(function(value){
    console.log(value.toString());
}, function(reason){
    console.log("讀取失敗!!");
});

Promise.prototype.then 方法

then方法的返回結(jié)果是 Promise 對象, 對象狀態(tài)由回調(diào)函數(shù)的執(zhí)行結(jié)果決定

//創(chuàng)建 promise 對象
const p = new Promise((resolve, reject)=>{
      // 異步任務(wù)
      setTimeout(()=>{
          resolve('用戶數(shù)據(jù)');
          // reject('出錯啦');
      }, 1000)
});

 // 調(diào)用 then 方法 
const result = p.then(value => {
    console.log(value);
    //1. 非 promise 類型的屬性, 狀態(tài)為成功, 返回值為對象的成功的值
    return 'iloveyou';
    //2. promise 對象
    return new Promise((resolve, reject)=>{
        // resolve('ok');
        reject('error');
    });
    //3. 拋錯
    // throw new Error('fuck!');
    throw '出錯啦!';
}, reason=>{
    console.warn(reason);
});

鏈式調(diào)用

p.then(value=>{

}).then(value=>{

});

案例-讀取多個文件

//引入 fs 模塊
const fs = require("fs");

// 回調(diào)地獄
// fs.readFile('./resources/為學(xué).md', (err, data1)=>{
//     fs.readFile('./resources/插秧詩.md', (err, data2)=>{
//         fs.readFile('./resources/觀書有感.md', (err, data3)=>{
//             let result = data1 + '\r\n' +data2  +'\r\n'+ data3;
//             console.log(result);
//         });
//     });
// });

// Promise
const p = new Promise((resolve, reject) => {
    fs.readFile("./resources/為學(xué).md", (err, data) => {
        resolve(data);
    });
});

p.then(value => {
    return new Promise((resolve, reject) => {
        fs.readFile("./resources/七步詩.md", (err, data) => {
            resolve([value, data]);
        });
    });
}).then(value => {
    return new Promise((resolve, reject) => {
        fs.readFile("./resources/游園不值.md", (err, data) => {
            //壓入
            value.push(data);
            resolve(value);
        });
    })
}).then(value => {
    console.log(value.join('\r\n'));
});

Promise.prototype.catch 方法

catch方法指定的回調(diào)函數(shù)捕獲promise拋出的錯誤

const p = new Promise((resolve, reject)=>{
  setTimeout(()=>{
     //設(shè)置 p 對象的狀態(tài)為失敗, 并設(shè)置失敗的值
     reject("怎么搞的!");
  }, 1000)
});

// p.then(function(value){}, function(reason){
//     console.error(reason);
// });

p.catch(function(reason){
    console.warn(reason);
});

十三、Set

??????ES6 提供了新的數(shù)據(jù)結(jié)構(gòu) Set(集合)。它類似于數(shù)組,但成員的值都是唯一的,集合實現(xiàn)了 iterator 接口,所以可以使用『擴展運算符』和『for…of…』進行遍歷,集合的屬性和方法:

  1. size 返回集合的元素個數(shù)
  2. add 增加一個新元素,返回當前集合
  3. delete 刪除元素,返回 boolean 值
  4. has 檢測集合中是否包含某個元素,返回 boolean 值
  5. clear 清空集合,返回 undefined
//聲明一個 set
let s = new Set();
let s2 = new Set(['1','2','3','4','2']);

// 元素個數(shù)
// console.log(s2.size);
// 添加新的元素
// s2.add('5');
// 刪除元素
// s2.delete('4');
// 檢測
// console.log(s2.has('6'));
// 清空
// s2.clear();
// console.log(s2);

for(let v of s2){
   console.log(v);
}

當然,集合還可以數(shù)組去重、交集、并集、差集

 let arr = [1,2,3,4,5,4,3,2,1];
 
 //1. 數(shù)組去重
 // let result = [...new Set(arr)];
 // console.log(result);
 
 //2. 交集
 let arr2 = [4,5,6,5,6];
 // let result = [...new Set(arr)].filter(item => new Set(arr2).has(item));
 // console.log(result);

 //3. 并集
 // let union = [...new Set([...arr, ...arr2])];
 // console.log(union);

 //4. 差集
 let diff = [...new Set(arr)].filter(item => !(new Set(arr2).has(item)));
 console.log(diff);

十四、Map

??????ES6 提供了 Map 數(shù)據(jù)結(jié)構(gòu)。它類似于對象,也是鍵值對的集合。但是“鍵”的范圍不限于字符串,各種類型的值(包括對象)都可以當作鍵。Map 也實現(xiàn)了iterator 接口,所以可以使用『擴展運算符』和『for…of…』進行遍歷。Map 的屬性和方法:

  1. size 返回 Map 的元素個數(shù)
  2. set 增加一個新元素,返回當前 Map
  3. get 返回鍵名對象的鍵值
  4. has 檢測 Map 中是否包含某個元素,返回 boolean 值
  5. clear 清空集合,返回 undefined
// 聲明 Map
let m = new Map();

// 添加元素
m.set('name','怪鴿');
m.set('say', function(){
    console.log("我們遇到什么困難,都不要怕");
});
let key = {
    hobby : '冬泳'
};
m.set(key, ['加油','奧力給','干就完了']);

// size
// console.log(m.size);

// 刪除
// m.delete('name');

// 獲取
// console.log(m.get('hobby'));
// console.log(m.get(key));

// 清空
// m.clear();

// 遍歷
for(let v of m){
    console.log(v);
}

十五、class 類

??????ES6 提供了更接近傳統(tǒng)語言的寫法,引入了 Class這個概念,作為對象的模板。通過 class 關(guān)鍵字,可以定義類。基本上,ES6 的 class 可以看作只是一個語法糖,它的絕大部分功能,ES5 都可以做到,新的 class 寫法只是讓對象原型的寫法更加清晰、更像面向?qū)ο缶幊痰恼Z法而已。

 //手機
 function Phone(brand, price){
     this.brand = brand;
     this.price = price;
 }

 //添加方法
 Phone.prototype.call = function(){
     console.log("我可以打電話!!");
 }

 //實例化對象
 let Huawei = new Phone('華為', 5999);
 Huawei.call();
 console.log(Huawei);

 //class
 class Shouji{
     //構(gòu)造方法 名字不能修改
     constructor(brand, price){
           this.brand = brand;
           this.price = price;
     }

     //方法必須使用該語法, 不能使用 ES5 的對象完整形式
     call(){
           console.log("我可以打電話!!");
     }
 }

 let onePlus = new Shouji("1+", 1999);

 console.log(onePlus);
在這里插入圖片描述

靜態(tài)成員

1.實例對象沒有構(gòu)造函數(shù)對象的屬性和方法,兩者之間是不通的,和構(gòu)造函數(shù)的原型對象是相通的
2.函數(shù)對象里的屬性是屬于函數(shù)對象的,并不屬于實例對象,對于這樣的屬性稱之為靜態(tài)成員

// 構(gòu)造函數(shù)對象
function Phone(){

}
// 靜態(tài)成員
Phone.name = '手機';
Phone.change = function(){
    console.log("我可以改變世界");
}
// 原型對象屬性
Phone.prototype.size = '5.5inch';

// 實例對象
let nokia = new Phone();

console.log(nokia.name); // undefinded
// nokia.change(); // not a function
console.log(nokia.size); // 5.5inch

class

// 類
class Phone{
   //靜態(tài)屬性
   static name = '手機';
   static change(){
          console.log("我可以改變世界");
   }
}

// 實例對象
let nokia = new Phone();
console.log(nokia.name); // undefined
console.log(Phone.name); // 手機

static標注的屬性和方法屬于類,不屬于實例對象

類繼承

 // ES5
 function Phone(brand, price){
     this.brand = brand;
     this.price = price;
 }

 Phone.prototype.call = function(){
     console.log("我可以打電話");
 }

 // 智能手機
 function SmartPhone(brand, price, color, size){
     // 繼承父類
     Phone.call(this, brand, price);
     this.color = color;
     this.size = size;
 }

 //設(shè)置子級構(gòu)造函數(shù)的原型
 SmartPhone.prototype = new Phone;
 SmartPhone.prototype.constructor = SmartPhone;

 // 聲明子類的方法
 SmartPhone.prototype.photo = function(){
     console.log("我可以拍照")
 }

 SmartPhone.prototype.playGame = function(){
     console.log("我可以玩游戲");
 }

 const huawei = new SmartPhone('華為',2499,'黑色','5.5inch');

 console.log(huawei);

class繼承和方法重寫

        // ES6
        class Phone{
            // 構(gòu)造方法
            constructor(brand, price){
                this.brand = brand;
                this.price = price;
            }
            // 父類的成員屬性
            call(){
                console.log("我可以打電話!!");
            }
        }

        class SmartPhone extends Phone {
            // 構(gòu)造方法
            constructor(brand, price, color, size){
                super(brand, price);// 相當于Phone.call(this, brand, price)
                this.color = color;
                this.size = size;
            }

            photo(){
                console.log("拍照");
            }

            playGame(){
                console.log("玩游戲");
            }
            
            // 方法的重寫
            call(){
                console.log('我可以進行視頻通話');
            }
        }

        const xiaomi = new SmartPhone('小米',1999,'黑色','4.7inch');
        // console.log(xiaomi);
        xiaomi.call();
        xiaomi.photo();
        xiaomi.playGame();

get和set

get通常對對象的動態(tài)屬性進行封裝,set可以進行控制和判斷是否合法

        // get 和 set  
        class Phone{
            get price(){
                console.log("價格屬性被讀取了");
                return 'iloveyou';
            }

            set price(newVal){
                console.log('價格屬性被修改了');
            }
        }

        //實例化對象
        let s = new Phone();

        // console.log(s.price);
        s.price = 'free';

十六、數(shù)值擴展

  1. Number.EPSILON 是 JavaScript 表示的最小精度
        //EPSILON 屬性的值接近于 2.2204460492503130808472633361816E-16
        function equal(a, b){
            if(Math.abs(a-b) < Number.EPSILON){
                return true;
            }else{
                return false;
            }
        }
        // console.log(0.1 + 0.2 === 0.3);
        console.log(equal(0.1 + 0.2, 0.3))
  1. 二進制和八進制
    ES6 提供了二進制和八進制數(shù)值的新的寫法,分別用前綴 0b 和 0o 表示。
   let b = 0b1010;
   let o = 0o777;
   let d = 100;
   let x = 0xff;
   console.log(x);
  1. Number.isFinite 檢測一個數(shù)值是否為有限數(shù)
  2. Number.isNaN 檢測一個數(shù)值是否為 NaN
  3. Number.parseInt Number.parseFloat字符串轉(zhuǎn)整數(shù)
  4. Number.isInteger 判斷一個數(shù)是否為整數(shù)
  5. Math.trunc 將數(shù)字的小數(shù)部分抹掉
  6. Math.sign 判斷一個數(shù)到底為正數(shù) 負數(shù) 還是零
    正數(shù)返回1,負數(shù)返回-1,零返回0

十七、對象擴展

  1. Object.is 比較兩個值是否嚴格相等,與『===』行為基本一致(+0 與 NaN)
   console.log(Object.is(120, 120));// true
   console.log(Object.is(NaN, NaN));// true
   console.log(NaN === NaN);// false 
  1. Object.assign 對象的合并,將源對象的所有可枚舉屬性,復(fù)制到目標對象
        const config1 = {
            host: 'localhost',
            port: 3306,
            name: 'root',
            pass: 'root',
            test: 'test'
        };
        const config2 = {
            host: 'http://baidu.com',
            port: 33060,
            name: 'baidu.com',
            pass: 'iloveyou',
            test2: 'test2'
        }
        console.log(Object.assign(config1, config2)); // config2覆蓋config1
  1. Object.setPrototypeOf 設(shè)置原型對象 Object.getPrototypeof 獲取原型對象
        const school = {
            name: '藍翔'
        }
        const cities = {
            xiaoqu: ['北京','山東','深圳']
        }
        Object.setPrototypeOf(school, cities); // 將cities設(shè)成school的原型對象
        console.log(Object.getPrototypeOf(school)); // 獲取school的原型對象

十八、模塊化

模塊化是指將一個大的程序文件,拆分成許多小的文件,然后將小文件組合起來。

好處:

防止命名沖突、代碼復(fù)用、高維護性

語法:

模塊功能主要由兩個命令構(gòu)成:export 和 import。
export 命令用于規(guī)定模塊的對外接口, import 命令用于輸入其他模塊提供的功能.

有什么問題歡迎大家在評論區(qū)討論o~?


  • 作者:風(fēng)時摩羯
  • 出處/源自:風(fēng)時摩羯的《普歌-飛靈團隊-ES6匯總
  • 本文版權(quán)歸作者和簡書共有,歡迎轉(zhuǎn)載,且在文章頁面明顯位置給出原文鏈接,未經(jīng)作者同意必須保留此段聲明,否則保留追究法律責(zé)任的權(quán)利。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容