原创 帶你手動實現bind方法,讓你收穫滿滿

1.手動實現bind方法的要點 當作爲this參數傳入的值爲原始類型數據時,該數據會被包裝成對象。傳入null或者undefined時,this會被替換爲window。 傳入一般對象時,返回的函數內部this指向該對象。 bin

原创 帶你手動實現Object.create()方法

1.我自己的實現 // 我自己的實現 Object.create() Object.create = function (proto, properties = {}) { let newObj = {}; ne

原创 帶你手動實現數組reduce方法

// 該方法存在構造函數的原型上,即數組實例的原型上。 Array.prototype.myReduce = function (fn, initValue) { if(initValue === undefin

原创 數據結構之棧的應用

1.首先,什麼是棧? 棧是一種線性邏輯結構。只支持入棧和出棧操作,遵循後進先出的原則(FILO)。 2.js描述棧 /*棧需要的操作: * 1.入棧 push() * 2.出棧 pop():該方法將棧頂元素永久

原创 js實現保留小數位數,簡單高效

1.如何實現呢 我的思路如下: 對於非number類型或者是NaN的數據,我們直接原樣返回該數據。 對於小數部分的位數,小於我們要保留的位數,我們也直接原樣返回該數據。 滿足條件的數據,先將數據轉爲字符串,然後,通過split(

原创 CSS經典佈局之聖盃佈局

1.首先,什麼是聖盃佈局? 聖盃佈局滿足以下特點: 兩側寬度固定,中間寬度自適應。 中間部分在DOM結構上優先,以便先行渲染。 允許三列中的任意一列成爲最高列。 只需要使用一個額外的div標籤。 2.如何實現? 使用彈性盒子

原创 詳細示例,講解事件循環(Event Loop)機制,看這一篇就夠了。

1.瀏覽器中的線程有以下幾種: js執行線程 GUI渲染線程 事件監聽線程 計時器計時線程 網絡通信線程 2.如何理解js單線程? 之所以說js單線程,是因爲它的執行引擎只有一個線程,並且不會在執行期間開啓新的線程。而並非是指

原创 使用ES5實現iterator遍歷器接口(遍歷器生成函數)

1.es5實現 const obj = { name: 'ha', age: 12, sex: 'man' }; obj[Symbol.iterator] = function(){ let in

原创 react項目中引入es6的async語法報錯

1.報錯信息 就是要將es6轉爲es5的語法。 2.如何解決。

原创 input框在box-sizing屬性的異常

1.input框好像在height屬性上遵循IE6混雜盒模型

原创 前端實現跨域的三種方式

1.什麼是跨域? 是瀏覽器的一種安全策略。當瀏覽器的某個頁面要訪問的服務器地址,跟該頁面的地址,存在協議,域名,端口號任一不相同時,瀏覽器視爲跨域訪問。 2.如何實現跨域?跨域的技術有哪些? 圖像ping jsonp跨域 COR

原创 react項目css樣式錯亂,帶來的思考

1.爲什麼出現了錯亂? 起初,項目中的每個組件的樣式使用less語法寫的,爲了避免編譯後,出現樣式覆蓋的問題。元素的類名使用的是文件名打頭 。後來,我引入了ant-desginUI框架。結果發現,由它帶來的重置css樣式,覆蓋了

原创 lodash源碼之判斷一個值是否爲有效的類數組的長度

1.一開始我的理解 必須是大於等於0的整數。 2.源碼 function isLength(value) { return typeof value === 'number' && value > -1

原创 lodash源碼獲取運行環境中的全局變量

今天在閱讀lodash源碼的時候,發現如下代碼,略作分享: 1.代碼片段一 /** Detect free variable `global` from Node.js. */ var freeGlobal = typeof g