原创 如何分享到faceBook並快速調試分享問題

功能 分享到faceBook 文檔 https://developers.facebook.com/docs/sharing/webmasters 遇到的問題 問題: 分享出去的鏈接圖片展示錯誤. 原因: 圖片鏈接不完整,未帶

原创 React優化

使用動態import來分割代碼 使用動態import來“懶加載”代碼,如果你沒辦法直接減少應用的體積,那麼不妨嘗試把應用從單個 bundle 拆分成單個 bundle + 多份動態代碼的形式。 方法一:使用動態import impo

原创 React組件通信

React間組件間通信有如下幾種方式: 父組件向子組件通信 子組件向父組件通信 跨級組件通信 非嵌套關係的組件通信 父組件向子組件通信 父組件直接通過props向子組件傳遞需要的信息 // 子組件 const Child =

原创 React事件機制

合成事件 如果DOM上綁定了過多的事件處理函數,整個頁面響應以及內存佔用可能都會受到影響。React爲了避免這類DOM事件濫用,同時屏蔽底層不同瀏覽器之間的事件系統差異,實現了一箇中間層——SyntheticEvent。 步驟

原创 DNS遞歸解析和迭代解析

DNS解析流程分爲遞歸查詢和迭代查詢,遞歸查詢是以本地名稱服務器爲中心查詢, 遞歸查詢是默認方式,迭代查詢是以DNS客戶端,也就是客戶機器爲中心查詢。其實DNS客戶端和本地名稱服務器是遞歸,而本地名稱服務器和其他名稱服務器之間是迭代。 在遞

原创 JS裏的模塊化

定義 模塊化開發是一種管理方式,是一種生產方式,一種解決問題的方案,一個模塊就是實現特定功能的文件,有了模塊,我們就可以更方便地使用別人的代碼,想要什麼功能,就加載什麼模塊。 規範 AMD(依賴前置) CMD(依賴就近) CommonJ

原创 bind,call,apply模擬實現

首先,三者第一個參數都爲this指向 區別 bind返回的是一個函數體 call和apply會直接執行,但是call參數需要一個一個進行傳遞,apply的第二個參數是一個數組 實現 bind 簡單實現 Function.protot

原创 JS實現串行請求

使用async和await 1 var fn = async function(promiseArr) { 2 for(let i = 0,len = arr.length; i<len; i++) { 3

原创 Promise核心實現

核心 構造函數核心 維護狀態變量,只能由pending變爲resolve或者reject 維護一個存儲結果的變量 維護一個回調數組,執行到then,如果我們傳入的立即執行函數沒有立即執行resolve或者reject,所以promise的

原创 Prmise.all的簡單實現

注意點 入參一般是個由Promise實例組成的數組,但是也可以不是數組,但必須具有 Iterator 接口,且返回的每個成員都是 Promise 實例。若參數如果不是 Promise 實例,就會先調用Promise.resolve()方

原创 使用 Promise 實現任務隊列發送請求,實現最大請求數目限制

核心 設置最大請求數量,當前請求數量,待執行隊列 調用時,創建一個新任務,然後判斷是否達到最大請求數量,若達到則將任務追加到待執行隊列,否則,則直接執行該任務。並返回Promise 創建任務時,需要返回一個函數,當該任務開始執行則當前數量

原创 JS數組去重的實現

其實數組去重的實現就分爲兩大類 利用語法自身鍵不可重複性 利用循環(遞歸)和數組方法使用不同的api來處理。 注意⚠️:下列封裝成方法的要在函數開始增加類型檢測,爲了讓去重的實現代碼更加簡單易懂,封裝時我會省略類型檢測 func

原创 JS實現斐波那契數列的五種方式

下面是五種實現斐波那契數列的方法 循環   function fibonacci(n){ var res1 = 1; var res2 = 1; var sum = res2; for(var i = 1;i < n;

原创 跨域方式及其實現

產生原因 爲什麼會產生跨域呢,因爲瀏覽器爲了安全採用了一系列的安全機制,其中有一個是同源策略。何爲同源策略(same-origin policy)。簡單來講同源策略就是瀏覽器爲了保證用戶信息的安全,防止惡意的網站竊取數據,禁止不同域之間的J

原创 JS數組拍平

日常中我們可能會遇到將多維數組轉換爲一維數組的需求,讓我們來看看如何實現 toString()方法 let array = [1, [2], [3, [4, [5]]]] function flat(arr) { return