原创 觀察者模式和發佈訂閱模式(續)

兩年前寫過一篇關於消息發佈訂閱的文章,當時是結合了實際的應用場景。看起來不夠抽象,概括。今天試圖抽象話的再去寫一下自己的理解。 此文續上篇發佈 訂閱 消息系統(一),可點擊查看,取名改爲觀察者和發佈訂閱模式。 什麼是觀察者模式

原创 JS中的parseInt,parseFloat,Number等數值轉換函數

JS數值轉換函數: Number() parseInt() parseFloat() Number()轉換規則: 如果是Boolean,分別轉化爲0 , 1 如果是數字值,只是簡單的傳入和傳出 如果是null值,返回0 如果

原创 JS中的call,apply和bind

梳理一下call,apply和bind,並儘量將其應用到實際開發環境中。 ​ /*apply()方法*/ function.apply(thisObj[, argArray]) /*call()方法*/ function.c

原创 JS中的setTimeout

JavaScript提供定時執行代碼的功能,叫做定時器(timer),主要由setTimeout()和setInterval()這兩個函數來完成。它們向任務隊列添加定時任務。初始接觸它的人都覺得好簡單,實時上真的如此麼?這裏記載

原创 vue實現三級聯動,多級聯動

vue做項目的時候,遇到了要實現多級聯動的需求,由於只是小功能,就沒有引入插件,自己實現了一下。 需求: 需要統計用戶購買的3C產品的信息,如下圖 需求評審的時候確定了讓前端存儲維護產品信息,所以下面代碼中會保存着這些信息,而不

原创 JS類數組轉化爲數組

童鞋們在平時可能會遇到類數組Array-like,它和數組很像,但是就是沒法用到數組的一些方法,真討厭,所以我們通常要轉換成數組才行。 一、什麼是類數組ArrayLike? 興趣先行,我們舉一個比較經典的類數組(最經典的類數組是A

原创 前端輸入Emoji表情導致的錯誤

用戶輸入了emoji表情,提交的時候因爲後端沒有存儲相應的emoji字符編碼,導致報錯異常。 原因: unicode定義的emoji是四個字符,對於一些之前沒有考慮過emoji表情的系統來說,其獲取或者展示簡直就是災難。公司用的M

原创 fixed定位 input在IOS設備上光標位置異常問題

頁面是個長頁面,點擊頁面不同部分,會彈出彈窗,如果用absolute定位,那麼彈窗的位置就難以定位,因而決定採用fixed定位,此時在IOS 11.2.x 系統中就 會出現點擊input光標位置異常的問題。 異常如圖所示: 原因

原创 IP地址,子網掩碼計算子網地址,廣播地址,子網劃分。

已知某子網中的一個主機的IP地址爲:203.123.1.135。子網掩碼是: 255.255.255.192。求:該子網的子網地址是什麼,廣播地址是什麼,該子網IP地址總數是多少,該子網可分配的IP地址數是多少,可分配的IP地址範圍是多

原创 zepto.js源碼解讀(二):zepto.init函數

zepto.init函數,源碼也就幾十行: zepto.init = function(selector, context) { var dom // If nothing given, return an empty Z

原创 微信瀏覽器頁面默認背景色的問題

在做一個微信掃描二維碼的頁面的時候,用同事的安卓手機掃碼,發現頁面的背景色差別非常大。 如下效果圖,差別非常明顯。 結論:潛意識一直以爲瀏覽器頁面的默認背景色會一直是#ffffff(純白色),但是查詢一些資料之後發現一些瀏覽器

原创 二進制加法計算

讀計算機原理這本書的的時候涉及到二進制數的加法,個人做個直觀的記錄,防止遺忘。 計算時,先把兩個二進制數對齊(如同十進制一樣, 從右向左) 1+1爲10,此時向上一位進1,0寫在本位(如同十進制) 不全爲1的兩個數,直接相加得到結果

原创 shim和polyfill的區別

在JavaScript的世界裏,有兩個詞經常被提到,shim和polyfill.它們指的都是什麼? 一個shim是一個庫,它將一個新的API引入到一箇舊的環境中,而且僅靠舊環境中已有的手段實現 一個polyfill就是一個用在瀏覽器AP

原创 zepto.js源碼解讀(三):zepto.Z函數

在瞭解zepto.Z函數之前,有必要了解一下原型鏈,繼承等方面的知識。推薦閱讀下以下博客:深入理解JavaScript原型和閉包 每個函數都有一個prototype(原型),這個函數的原型的constructor屬性指向它自己。通過n

原创 Promise.js源碼解讀

最近做了一個後臺的管理系統,爲了實現回調,不得不進行層層的嵌套(callback hell)。第二版本的時候決定使用es6的新特性Promise對代碼進行優化,爲了兼容各瀏覽器環境,引入了一個兼容的promise.js。網上關於Prom