1. 程式人生 > >6. 深度克隆_ES7**_arr.includes('孫悟空')

6. 深度克隆_ES7**_arr.includes('孫悟空')

1. 如何實現深度克隆

  • 利用 JSON 方法 (沒辦法克隆函式資料)

`JSON.parse(JSON.stringify(xxx))`

  • 自定義方法

檢查所有資料型別的方法 `Object.prototype.toString.call(obj).slice(8, -1)`

  • function deepClone(obj) {
        let newObj = null;
        //判斷obj是否是物件或者陣列
        const type = checkType(obj);
        if (type === 'Object') {
            
    //建立一個新物件 newObj = {}; } else if (type === 'Array') { newObj = []; } else { return obj; } //遍歷 for (let key in obj) { //獲取屬性的值 const value = obj[key]; //檢查屬性值是否是物件或者陣列 if (checkType(value) === 'Object' || 'Array') {
    //特殊處理 newObj[key] = deepClone(value); } else { //基本資料型別的處理 newObj[key] = value; } } return newObj; }

2. ES7

指數運算子(冪): **

`Array.prototype.includes(value)` : 判斷陣列中是否包含指定value

3. nodejs

是一個基於 Chrome V8 引擎的 JavaScript 執行環境。

特點:

搭建伺服器

非同步的非阻塞的I/O(I/O執行緒池)

事件迴圈機制

單執行緒

跨平臺

缺點:

回撥函式巢狀太多、太深(俗稱回撥地獄)

單執行緒,處理不好CPU 密集型任務

應用場景:

I/O 密集型的領域:如 Web 開發前端渲染,前端構建。

低延遲的網路應用:如restful API、即時聊天。

現階段由淘寶牽頭使用量越來越多,越來越多公司都使用了nodejs技術優化伺服器,它日趨重要

4. 談談 commonjs 模組化語法

暴露模組的內容

暴露的本質        module.exports 指向的值        預設為{}  

module.exports

module.exports = xxx

module.exports.xxx = xxx

exports

exports.xxx = xxx

引入其他模組

require('模組路徑')

自定義模組路徑必須以 ./ 或 ../ 開頭,如果不是就報錯 Cannot find module 'module1'

模組檔案字尾名可以省略, js 檔案  json 檔案 node 檔案,只有以上三種檔案,檔案字尾名可以省略

5. 陣列去重的方法

`[...new Set(arr)]`