原创 ES5的函數與ES6的箭頭函數的區別

之前被人問過這樣一個問題,ES5的函數與ES6中的箭頭函數有哪些區別 當時想着這麼不是很簡單麼,ES6中的箭頭函數是擁有this綁定的,且箭頭函數的this綁定是尤其定義時的作用域決定的,且箭頭函數的寫法更精簡。其實這麼說也沒有問題,

原创 JS-防抖和節流

在前端的性能優化中,我們經常會聽到有一個叫做防抖和節流的技術。 所謂的防抖就是當事件頻繁連續觸發的時候,我們不做處理,當事件的觸發間隔大於我們設定的時間時,我們再去觸發這個事件,如此就減少了事件的觸發頻率,而節流的思路則是不管事件觸發

原创 二叉樹系列(1)-實現排序二叉樹

排序二叉樹就是在一棵普通的數的基礎上,一個節點的左節點的值一定小於這個節點的值,右節點的值大於這個節點的值。 每棵樹都是由節點生成的,每個節點都有左右節點兩個屬性,用JS來實現如下: function Node(data){ th

原创 ES6中的Class不用new就報錯的實現

昨天面試的時候,遇到了一個問題,ES6中的class不使用new就會報錯,請問你如何用ES5的構造函數實現同樣的效果。 當時我是一臉懵逼的,面試結束後,自己一直在思考這個問題,仔細想了想new的整個過程 function myNew

原创 bind的實現

ES6中擁有bind,可以通過ES5中的apply來實現 我們知道bind的用法如下 funcA.bind(obj,args); 返回的是一個函數 Function.prototype.bind = function(context

原创 CSS未解之謎

今天再幫同事調試一個樣式的問題時,我發現了一個很神奇的現象,而其中的原由我個人卻不得而知,現記錄如下,待日後破解。 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF

原创 arguments轉換爲數組

使用如下方法即可 Array.prototype.slice.call(arguments); [].slice.call(arguments);

原创 git回退單文件

git回退 預熱: 進入要回退的文件目錄,或者使用 find -name 文件名 得到文件的完整路徑 步驟一: 查看要回退文件的歷史記錄 git log --oneline .a.txt 比方說,這是我們需要回退到merge trun

原创 JS排序算法

這裏簡單的總結一下排序算法中的4種 1、冒泡排序 2、選擇排序 3、插入排序 4、快速排序 1 冒泡排序 冒泡排序就是循環遍歷,兩兩進行比較排大小 function BubleSort(s){ for(let i = 0; i <

原创 行內元素設置padding和margin

先說結論 1、margin在水平方向有效,垂直方向無效。 2、padding在水平方向有效,垂直方向可以有視覺效果,但是不影響佈局 3、高度height和寬度width的設置是無效的,高度可用line-height設置 舉個列子 <!

原创 JS繼承--聖盃模式

今天看到一篇文章,講到了JS中的繼承,提及了一個新的概念,聖盃模式。於是查閱了一下資料,看到對於聖盃模式的描述如下: var inherit = ((Origin, Target)=>{ let F= function(){};

原创 JS中的this綁定

JS中的this綁定 一共有5種情況,下面一一進行介紹 1、默認綁定 默認綁定中的this指向undefined或者window,根據環境不同,指向不同。在strict模式下,指向undefined 2、隱式綁定 隱式綁定簡單來說就是

原创 JS實現lazyMan

今天看到一個有意思的題目,使用JS實現LazyMan 具體效果如下: LazyMan('xx'); // Hello xx LazyMan('xx').eat('dinner'); //Hello xx // Eat dinner

原创 JS大數相加

記得之前看到過一個JS超大正整數相加的題目,今天想了下自己會怎麼實現,於是便進行了嘗試,代碼如下: function bigAdd(a, b){ let lenA = a.length, lenB = b.len

原创 git--ssh key無效

有時候我們明明在github上添加了ssh key,但是在push代碼的時候還會要求我們輸入用戶名密碼,這是爲什麼了? 其中一種可能的原因是,你在克隆代碼的時候,使用了https協議,而不是git協議。https協議要求你每次都需要輸