1. 如何實現深度克隆前端
`JSON.parse(JSON.stringify(xxx))`node
檢查全部數據類型的方法 `Object.prototype.toString.call(obj).slice(8, -1)`json
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)` : 判斷數組中是否包含指定valuerestful
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)]`