原创 什麼是CORS,它是如何解決前端跨域的

CORS是一個W3C標準,全稱是“跨域資源共享”,它允許瀏覽器向跨源服務器,發出XHR請求,克服了AJAX的同源限制。 實現CORS通信的關鍵是服務器。只要服務器實現了CORS接口,就可以跨源通信。對於開發者來說,CORS通信與同源的AJ

原创 JavaScript:如何找出一行字符串第一個不重複的字符

題目:找出字符串第一個不重複的字符。 我查看了很多人的博客,基本都是20行左右的代碼,可讀性不好。 而我這隻需8行代碼,就能完美實現這個功能。 function findSingleChar(str) { var len

原创 JavaScript精華筆記:ES5數組新增函數的源碼實現(1)

本篇文章中,對forEach、filter、map、Every、Some、reduce和reduceRight等函數,講述瞭如何自己編寫代碼實現它們的功能。 通過閱讀源碼,自己編寫源碼,能瞭解編寫思想、熟悉設計模式,能鍛鍊自己編寫

原创 你不知道的GET和POST

GET和POST是HTTP請求的兩種基本方法,要說它們的區別,接觸過WEB開發的人都能說出一二。 它倆最直觀的區別就是GET把參數包含在URL中,POST通過request body傳遞參數。 當面試官問到這個問題時,先要清楚是基於什麼前

原创 Vue源碼:雙向綁定的實現原理

本篇博客供個人學習記錄,暫時附上代碼,後期進行整理。 代碼粘貼下來存儲爲html文件可直接查看效果。 雙向綁定流程圖​​   Compile流程圖 <!DOCTYPE html> <html lang="en"> <head>

原创 使用for循環渲染時爲什麼不要將key值設爲index?

無論是Vue的v-for還是React的數組渲染,它們都要求設置一個key值,它默認用“就地複用”策略,方便了diff算法更高效的比對dom元素。 那爲什麼不推薦使用index作爲key值呢?因爲它可能會導致dom操作次數增多,從

原创 Vue中v-if和v-show的區別

參考鏈接:博客園 簡單來說,v-if 的初始化較快,但切換代價高;v-show 初始化慢,但切換成本低。 共同點 都是動態的顯隱DOM元素。 區別 (1)手段 v-if:當隱藏結構時該結構會直接從整個dom樹中移除; v-show

原创 通過原生JS實現React的虛擬Dom及渲染方法

JSX語法通過Babel會轉換爲React.createElement()形式的代碼,所以也是爲什麼在引入react時,要將其命名爲"React"。 // 實現React的createElement方法 const React =

原创 精品:用JavaScript教你如何實現二叉查找樹(3)

參考:《數據結構與算法 JavaScript 描述》 本篇文章中,給二叉查找樹,添加四個數據操作方法,這四個方法也展示了二叉查找樹查找數據的快捷性。 在二叉查找樹上進行查找 對 BST 通常有下列三種類型的查找: (1) 查找給定值;

原创 精品:用JavaScript教你如何實現二叉查找樹(1)

本文參考《數據結構與算法JavaScript描述》一書,根據我的學習心得詳述了以下幾點內容: 樹的定義 二叉查找樹的實現 二叉查找樹的遍歷 二叉查找樹的查找 如何刪除二叉查找樹上的節點 二叉樹的術語 一棵樹最上面的節點稱爲根節點,

原创 精品:用JavaScript教你如何實現二叉查找樹(2)

**說在前面的話:**不懂遞歸的可一定要看到最後,我畫了一個樹形圖對理解遞歸有幫助哦! 遍歷二叉查找樹 本文接上一篇文章,上篇文章介紹瞭如何實例化一個二叉查找樹,並且實現瞭如何實例化一個節點,並插入到二叉查找樹中。本文開始講解如何實現

原创 JavaScript中遞歸的簡單概述

JavaScript 中允許函數遞歸調用。前面定義過的 factorial() 函數也可以用遞歸方式定義: function factorial(number) { if (number == 1) { return numbe

原创 如何通過CORS跨域請求實現聊天小AI

聊天機器人github地址:https://github.com/Neekky/chatting-robot CORS跨域解決方案 CORS(跨源資源共享)通過新增一系列 HTTP 頭,讓服務器能聲明哪些來源可以通過瀏覽器訪問該服務器

原创 JavaScript:使用原生JS實現Jsonp跨域,調用百度搜索接口完成聯想詞功能

Jsonp解釋 Jsonp這個術語聽起來很高大上,其實它的原理非常簡單,就是利用src不受同源策略限制這一點來實現的,很多標籤都有src特性。 你們可以想想爲什麼img標籤能將不同源的百度logo拿過來? <img src="http

原创 JavaScript:使用原生JS封裝一個ajax兼容性方法

ajax請求過程: 需要有個設備的支持,就是瀏覽器,沒瀏覽器ajax是發不出去的。 需要有一個ajax對象。 規定請求的方式,獲取誰家的數據。 ajax.open(method,url,true)初始化請求方式、請求數據地址、選擇異