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