原创 寫一個簡單的generator執行器

對generator不熟悉的可以先看下相關的基礎資料 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Generat

原创 JavaScript 設計模式 --- 策略模式

前言 在我們編寫業務代碼時,分支結構應該是我們最常用到的結構了。下面先模擬一個簡單的業務場景: 要根據當前用戶登錄的身份(達人/機構/賣家)和對應的角色等級來展示用戶的logo // 假設有這麼一個基於React的logo組件 <

原创 JavaScript 繼承實現的幾種方式

前言 繼承,作爲複用代碼的一種有效手段,在面向對象編程中有着重要意義。但是這門腳本語言的確不像某些靜態語言那樣提供了真正意義上的基於類實現的繼承方式,而是採用了一種基於原型的繼承。這裏將說說在ES5時,使用JavaScript來實

原创 JavaScript算法系列-求一個數組的中心索引

給定一個整數類型的數組 nums,請編寫一個能夠返回數組“中心索引”的方法。 我們是這樣定義數組中心索引的:數組中心索引的左側所有元素相加的和等於右側所有元素相加的和。 如果數組不存在中心索引,那麼我們應該返回 -1。如果數組有多

原创 JavaScript 算法系列---動態規劃

很久之前接觸過這樣一道題目,總共有十層階梯,從1層開始往上爬,每次可以上1層或者2層,問到10層總共有多少種方法? 思路:這個問題就是動態規劃的一個經典例子,所謂動態規劃,就是把複雜的問題進行拆解,拆解成一個個子問題,而這類問題最

原创 如何在Vue中更好的複用組件

前言 大多數前端框架都提供了組件化的能力,在日常開發中,我們經常會用組件去封裝自己的業務邏輯,那麼如何去寫一個複用率高的組件就變成了一個重要的技巧。這裏總結一下在使用Vue時幾種複用組件的方式。 場景 表單驗證是一個經常碰到的場景

原创 JavaScript 設計模式 --- 迭代器模式

前言 迭代器模式應該算是比較 “低調” 的設計模式了,因爲這種模式在日常工作中經常遇到,但由於本身這種模式的思想十分簡單,所以一般不會特別的去關注他。 迭代器模式注重的是如何去迭代集合中每一個元素,大部分語言都內置了實現迭代器接口

原创 JavaScript算法系列 --- LRU 緩存機制

原題來自力扣,這裏用到了JS中的Map這個數據結構。利用散列表和雙向鏈表實現。 力扣LRU原題 var LinkNode = function(key,value){ this.key = key; this.va

原创 JavaScript異步編程:Promise篇

前言 異步編程作爲JavaScript 中的核心內容,是必須要掌握的一個基礎。在日常開發過程中,會有很多異步的場景。比如定時器,網絡請求,事件監聽等等… 而異步編程中也有很多讓人詬病的點,比如 callback hell(回調地獄

原创 JavaScript 設計模式 --- 發佈訂閱模式

前言 對於前端同學而言,發佈-訂閱模式應該是最熟悉的設計模式了。平常寫的最多的事件監聽就是一個最好的例子。 var dom = document.querySelector('xxx'); dom.addEventListener

原创 談談JavaScript的閉包

前言 閉包(closure)這個概念總是那麼晦澀難懂,這篇文章希望結合自己的經驗來說說這個概念。 作用域 在談閉包之前,作用域這個概念是一定繞不開的。但是這裏並不準備展開來詳細說明他。簡單總結幾點。 JavaScript中函數能

原创 bootstrap-select 使用踩坑

動態改變 bootstrap-select 數據源 維護一個歷史項目時,需要動態改變一個下拉框的options選項,這裏使用了bootstrap-select 這個組件,開始再嘗試了很多方法之後,都不能達到效果,這裏直接給出解決

原创 關於對象的數據屬性

javascript中對象是經常用到的東西,今天我來寫一些對於創建對象時,定義屬性時的一些特徵值。 這些特徵值不能直接訪問,下面舉例說明。 var a={     'name':'kasol',     'age':18,     'ho

原创 關於php在查詢數據庫時某個字段爲中文查詢失敗

使用PHP的PDO來查詢數據時,發現某個字段爲中文查找失敗,實際上肯定是字符集的原因,但是不管是頁面還是MySql數據庫建表時都是使用UTF-8的,爲什麼還會有問題呢,後來發現是少了關鍵的一句,下面上代碼: try{         $

原创 函數技巧--惰性加載

有時候我們寫的一段代碼,用分支控制語句來決定程序的走向,有時候當運行環境一定的時候,if else 語句就是固定走某一個分支,這樣一來,其他不會運行的分支就被浪費了,下面舉個例子: function getXhr(){ var xh