天天看點

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)]`

轉載于:https://www.cnblogs.com/tianxiaxuange/p/10200837.html

繼續閱讀