JS相關的複習記錄-持續更新

一:數據類型檢測

  typeof 能夠檢測除了null 和 Array以外的全部類型。node

  instanceof 經過原型鏈來判斷數據類型的es6

  Object.prototype.toString.call() 能夠檢測全部的數據類型數組

二:深淺拷貝

  淺拷貝:Object.assign({},{a:1})promise

  深拷貝:JSON.parse(JSON.stringify(obj))瀏覽器

三:promise

  promise 狀態: pending, resolve,  rejectapp

  pending: 正在進行中。異步

  resolve: 成功的回調。模塊化

  reject: 失敗的回調函數

四:jquert 鏈式寫法的調用原理

   實例在調用內部方法的時候,返回當前調用這個方法的實例對象this就能夠了,由於返回了當前的this就能夠繼續訪問本身的原型了this

五:什麼是回調地獄並避免。

  什麼是回調地獄:在js中的異步邏輯致使致使函數的參數層層嵌套。一個函數做爲參數須要依賴另外一個函數執行的調用。

如何避免:

  保持代碼剪短,模塊化引用。

  es6 用promises 編寫異步代碼,使代碼繼續自上而下。而且可使用try/catch,

  es6 Generators是代碼暫停,用next(繼續)使代碼繼續自上而下

  es7 Async function 異步方法

 六:Javascript做用鏈域?

  由於全局函數沒法查看局部函數的內部結構,但局部函數能夠查看上層和全局的函數結構,當須要從局部函數查找某一屬性或者函數時,如當前做用域沒有,邊上找到上一層做用域,直到全局。

 談談This對象的理解。

  this老是指向函數的直接調用者;若是有new關鍵字,this指向new出來的那個對象;在事件中,this指向觸發這個事件的對象

七:DOM操做——怎樣添加、移除、移動、複製、建立和查找節點?

  (1) 建立新節點 createDocumentFragment() //建立一個DOM片斷 createElement() //建立一個具體的元素 createTextNode() //建立一個文本節點

  (2) 添加、移除、替換、插入 appendChild() removeChild() replaceChild() insertBefore() //在已有的子節點前插入一個新的子節點

  (3) 查找 getElementsByTagName() //經過標籤名稱 getElementsByName() //經過元素的Name屬性的值(IE容錯能力較強,會獲得一個數組,其中包括id等於name值的) getElementById() //經過元素Id,惟一性

八:如何判斷當前腳本運行在瀏覽器仍是node環境中?

  this === window ? 'browser' : 'node';

九:檢測瀏覽器版本信息等

  navigator.userAgent

十:函數防抖(debounce)與函數節流(throttle)

  函數防抖(debounce):在事件被觸發n秒後再執行回調,若是在這n秒內又被觸發,則從新計時。

  實際利用:每次 resize/scroll 觸發統計事件、文本輸入的驗證(連續輸入文字後發送 AJAX 請求進行驗證,驗證一次就好)

  函數節流(throttle):規定一個單位時間,在這個單位時間內,只能有一次觸發事件的回調函數執行,若是在同一個單位時間內某事件被觸發屢次,只有一次能生效。

  DOM 元素的拖拽功能實現(mousemove).計算鼠標移動的距離(mousemove)

相關文章
相關標籤/搜索