導讀
請搭配導圖一起看
- 基層攻城獅 基礎知識
- 高級攻城獅 項目經(jīng)驗
- 架構(gòu)師 解決方案
https://zhuanlan.zhihu.com/p/28428367
這里寫圖片描述
舉例面試題:
變量類型和變量計算
幾種基本數(shù)據(jù)類型?復雜數(shù)據(jù)類型?值類型和引用數(shù)據(jù)類型?堆棧數(shù)據(jù)結(jié)構(gòu)?
基本數(shù)據(jù)類型:Undefined、Null、Boolean、Number、String
值類型:數(shù)值、布爾值、null、undefined。
引用類型:對象、數(shù)組、函數(shù)。
堆棧數(shù)據(jù)結(jié)構(gòu):是一種支持后進先出(LIFO)的集合,即后被插入的數(shù)據(jù),先被取出!
js數(shù)組中提供了以下幾個方法可以讓我們很方便實現(xiàn)堆棧:
shift:從數(shù)組中把第一個元素刪除,并返回這個元素的值。
unshift: 在數(shù)組的開頭添加一個或更多元素,并返回新的長度
push:在數(shù)組的中末尾添加元素,并返回新的長度
pop:從數(shù)組中把最后一個元素刪除,并返回這個元素的值。
JS內(nèi)置函數(shù)
- 內(nèi)置函數(shù)Object,Array,Boolean,Number,String,Function,Date,RegExp,Error
- 內(nèi)置對象Math,JSON…..
值類型和引用類型
- 值類型:數(shù)值、布爾值、null、undefined。
- 引用類型:對象、數(shù)組、函數(shù)。
What the fuck is JSON?
對象是一個無序的“‘名稱/值’對”集合。一個對象以“{”(左括號)開始,“}”(右括號)結(jié)束。每個“名稱”后跟一個“:”(冒號);“‘名稱/值’ 對”之間使用“,”(逗號)分隔。
https://zh.wikipedia.org/wiki/JSON
http://www.json.org/json-zh.html
原型和原型鏈-構(gòu)造函數(shù)問題
instanceof的妙用
object instanceof constructor
instanceof 運算符用來檢測 constructor.prototype 是否存在于參數(shù) object 的原型鏈上。
typeof無法判斷數(shù)組
new對象過程
原型鏈繼承
原型規(guī)則(隱式原型和顯式原型)
原型鏈繼承例子
zepto原型鏈
鏈式操作
作用域和閉包-執(zhí)行上下文
變量(自由變量)
this
作用域
確定點擊按鈕的作用域
立即函數(shù)
( function(){…} )()和( function (){…} () )是兩種javascript立即執(zhí)行函數(shù)的常見寫法
模仿一個私有作用域,用匿名函數(shù)作為一個“容器”,“容器”內(nèi)部可以訪問外部的變量,而外部環(huán)境不能訪問“容器”內(nèi)部的變量,所以( function(){…} )()內(nèi)部定義的變量不會和外部的變量發(fā)生沖突,俗稱“匿名包裹器”或“命名空間”。
函數(shù)聲明和函數(shù)表達式不同之處在于,一、Javascript引擎在解析javascript代碼時會‘函數(shù)聲明提升’(Function declaration Hoisting)當前執(zhí)行環(huán)境(作用域)上的函數(shù)聲明,而函數(shù)表達式必須等到Javascirtp引擎執(zhí)行到它所在行時,才會從上而下一行一行地解析函數(shù)表達式,二、函數(shù)表達式后面可以加括號立即調(diào)用該函數(shù),函數(shù)聲明不可以,只能以fnName()形式調(diào)用 。
匿名函數(shù)屬于函數(shù)表達式
JQuery使用的就是這種方法,將JQuery代碼包裹在( function (window,undefined){…jquery代碼…} (window)中,在全局作用域中調(diào)用JQuery代碼時,可以達到保護JQuery內(nèi)部變量的作用。
http://www.jb51.net/article/50967.htm這里寫圖片描述
閉包
異步和單線程
同步和異步
異步場景
setTimeout過程
JS-Web-API
獲取時間
數(shù)組API
遍歷數(shù)組和對象
使用if判斷數(shù)組(for,forEach)和對象(for in)
這里寫圖片描述
對象API
隨機數(shù)(長度一定)
Dom
Dom操作常用API
-
獲取Dom節(jié)點getElementById
- 獲取父元素 parentElement
- 獲取子元素 childNodes
新增節(jié)點appendChild
創(chuàng)建元素createElement
刪除節(jié)點 removeChild
JS中Attribute 和prototype 的區(qū)別是一個是標簽屬性 一個是對象屬性
網(wǎng)絡基礎
圖片懶加載
BOM
事件綁定
代理
事件委托就是利用事件冒泡,只指定一個事件處理程序,就可以管理某一類型的所有事件。
這里寫圖片描述