原创 JavaScript自定義事件--高級技巧

觀察者模式 事件是JavaScript和瀏覽器交互的主要途徑。事件是一種叫做觀察者的設計模式,這是一種創建鬆散耦合代碼的技術。 觀察者模式:由兩類對象組成,主體和觀察者,主體負責發佈事件,觀察者通過訂閱這些事件來觀察主體。該模式的一個重

原创 React Refs用法

Refs介紹 Refs提供了一種訪問在render方法中創建的DOM節點或者React元素的方法。在典型的數據流中,props是父子組件交互的唯一方式,想要修改子組件,需要使用新的pros重新渲染它。凡事有例外,某些情況下我們需要在典型

原创 JavaScript與Dijkstra 最短路算法

背景 Floyd 最短路算法用於求解任意兩點的最短路徑,稱爲“多源最短路”。下面我們介紹指定一個點到其他各個頂點的最短路徑,叫做:單源最短路徑。 下面我們還是先給出本篇文章講解依賴的圖: 數據結構 同樣,我們使用一個二維數組存儲

原创 JavaScript創建對象的幾種模式

前言 對象字面量以及Object構造函數均可以創建單個對象,但是這樣的方式有一個致命缺點,會產生大量的重複代碼,爲了解決這個問題,人們開始使用工廠模式創建對象。 工廠模式 工廠模式抽象化了創建具體對象的過程,ES5中無法創建類,開

原创 JavaScript拖放實現

拖放概念:點擊某個對象,並按住鼠標按鈕不放,將鼠標移動到另一個區域,然後釋放鼠標按鈕將對象放在這裏。 基本思路: 創建一個絕對定位的元素,使其可以用鼠標移動。 本文通過實例代碼講解如何實現拖放功能。 HTML代碼實現 在寫js代

原创 JavaScript與Floyd最短路算法

背景 NBA超級後場組合燈泡組合(Harden和CP3)休賽期來到中國玩耍,他們兩人打算在四個城市進行玩耍,最後他們選擇了北京、上海、西安和長沙。假設這四個城市之間有些城市之前有航線,而有些城市之間沒有航線。爲了方便行程,出發前,他們想

原创 JavaScript判斷plain object

Plain Object: 指的是通過字面量形式或者new Object()形式定義的對象。 通過以下代碼可以進行判定。 function isPlainObject(obj) { if (typeof obj !== 'obj

原创 CMD規範

對於瀏覽器端,爲了實現JavaScript模塊化開發,提出了AMD和CMD規範。 本文介紹一下CMD規範包含的內容,主要介紹內容包含書規則和引用方式。 define—–定義 顧名思義,define是用來定義模塊的,它是一個全局函數,可

原创 JavaScript跨瀏覽器事件處理程序、事件對象

var EventUtil = { addHandler:function(element,type,handler){ if(element.addEventListener){ elem

原创 JavaScript二叉樹遍歷

本文主要講述二叉樹的先序、中序、後序遞歸遍歷及非遞歸遍歷,並講述如何使用JavaScript實現遍歷邏輯。 下面,我們通過一個例子來回顧一下先序、中序、後序遍歷: 上面二叉樹先序、中序、後序遍歷結果分別爲: 先序:ABCDE

原创 React Context和高階組件HOC用法

前言 本文將通過官方實例,組合運用Context和高階組件,並給出實例代碼的方式詳細介紹Context、高階組件的概念和用法。 Context 在典型的React應用中,數據是通過props屬性一層層的由上向下傳遞。但是對於應用中很多

原创 JavaScript私有變量

私有變量 任何在函數中定義的變量,都可以認爲是私有變量。私有變量包括:函數的參數、局部變量、函數內部定義的其他函數。 我們把有權訪問私有變量和私有函數的公有方法稱爲特權方法。 利用私有變量,可以隱藏那些不應該被直接修改的數據。 示

原创 js窗口尺寸獲取常用屬性

window.innerHeight(innerWidth):表示可見區域的高度(寬度),如果底部(右側)有滾動條,會把底部(右側)滾動條的高度(寬度)計算進去,此方法適用於標準瀏覽器及IE9+。 document.documentE

原创 JavaScript與Floyd 最短路算法

背景 NBA超級後場組合燈泡組合(Harden和CP3)休賽期來到中國玩耍,他們兩人打算在四個城市進行玩耍,最後他們選擇了北京、上海、西安和長沙。假設這四個城市之間有些城市之前有航線,而有些城市之間沒有航線。爲了方便行程,出發前,他們想

原创 第二節:CSS選擇器

規則結構 每個規則分爲兩個基本部分:選擇器和聲明塊。聲明塊由一個或多個聲明組成,每個聲明則是一個屬性-值對,每個樣式表由一系列規則組成。如圖: 元素選擇器 最常見的選擇器往往是HTML元素,但也不完全是這樣,XML元素當然也可作爲元素