typeof 能夠檢測除了null 和 Array以外的全部類型。node
instanceof 經過原型鏈來判斷數據類型的es6
Object.prototype.toString.call() 能夠檢測全部的數據類型數組
淺拷貝:Object.assign({},{a:1})promise
深拷貝:JSON.parse(JSON.stringify(obj))瀏覽器
promise 狀態: pending, resolve, rejectapp
pending: 正在進行中。異步
resolve: 成功的回調。模塊化
reject: 失敗的回調函數
實例在調用內部方法的時候,返回當前調用這個方法的實例對象this就能夠了,由於返回了當前的this就能夠繼續訪問本身的原型了this
什麼是回調地獄:在js中的異步邏輯致使致使函數的參數層層嵌套。一個函數做爲參數須要依賴另外一個函數執行的調用。
如何避免:
保持代碼剪短,模塊化引用。
es6 用promises 編寫異步代碼,使代碼繼續自上而下。而且可使用try/catch,
es6 Generators是代碼暫停,用next(繼續)使代碼繼續自上而下
es7 Async function 異步方法
由於全局函數沒法查看局部函數的內部結構,但局部函數能夠查看上層和全局的函數結構,當須要從局部函數查找某一屬性或者函數時,如當前做用域沒有,邊上找到上一層做用域,直到全局。
談談This對象的理解。
this老是指向函數的直接調用者;若是有new關鍵字,this指向new出來的那個對象;在事件中,this指向觸發這個事件的對象
(1) 建立新節點 createDocumentFragment() //建立一個DOM片斷 createElement() //建立一個具體的元素 createTextNode() //建立一個文本節點
(2) 添加、移除、替換、插入 appendChild() removeChild() replaceChild() insertBefore() //在已有的子節點前插入一個新的子節點
(3) 查找 getElementsByTagName() //經過標籤名稱 getElementsByName() //經過元素的Name屬性的值(IE容錯能力較強,會獲得一個數組,其中包括id等於name值的) getElementById() //經過元素Id,惟一性
this === window ? 'browser' : 'node';
navigator.userAgent
函數防抖(debounce):在事件被觸發n秒後再執行回調,若是在這n秒內又被觸發,則從新計時。
實際利用:每次 resize/scroll 觸發統計事件、文本輸入的驗證(連續輸入文字後發送 AJAX 請求進行驗證,驗證一次就好)
函數節流(throttle):規定一個單位時間,在這個單位時間內,只能有一次觸發事件的回調函數執行,若是在同一個單位時間內某事件被觸發屢次,只有一次能生效。
DOM 元素的拖拽功能實現(mousemove).計算鼠標移動的距離(mousemove)