前端小知識10點(2019.5.2)

一、爲何 jQuery 總體上是一個匿名函數自調用?javascript

由於匿名函數自執行裏面的全部東西都是局部的,這樣引用 jQuery 時,能防止和其餘的代碼衝突。java


二、jQuery 靜態方法和實例方法的區別數組

  • $() 是調用 jQuery 方法返回的一個 jQuery 對象,$() 調用的方法是實例方法,實例方法只能爲 $() 所用

如:$("li").each()瀏覽器

  • $ 是 jQuery 函數(方法),$ 調用的方法是靜態方法/工具方法,靜態方法既能夠給 $() 調用,也能夠給原生 javascript 調用

如:$().each()antd


三、爲何 typeof null 的結果是 object ?函數

console.log(typeof null) //object
在 JavaScript 最初的實現中,JavaScript 中的值是由一個表示類型的標籤和實際數據值表示的。對象的類型標籤是 0。因爲 null 表明的是空指針(大多數平臺下值爲 0x00),所以,null的類型標籤也成爲了 0,typeof null就錯誤的返回了"object"。

MDN連接:https://developer.mozilla.org...工具


四、undefined 不是 js 的關鍵字
咱們習慣在項目裏這樣判斷是否爲 undefinedthis

name===undefined?'a':'b'

但一旦手動定義 undefined 而且賦值了,那麼會覆蓋掉 js 的變量類型 undefinedspa

let undefined='a'
console.log(undefined) //a

因此,在作項目中,不要給變量起名爲 undefined,並賦值prototype


五、利用原型,來節省內存
A:

function person(name){
      this.name=name
      this.showName=function(){
        console.log(this.name)
      }
    }

B:

function personA(name) {
      this.name=name
    }
    personA.prototype={
      showName:function () {
        console.log(this.name)
      }
    }

使用方法 A 來 new 對象時,每一個對象都要定義一遍 showName 方法,這會增長瀏覽器的內存
而使用方法 B new 對象的話,每一個對象都共享了原型的方法,從而節省內存


六、new 一個對象,通常通過四個步驟
(1)建立一個新對象
(2)將構造函數的做用域賦值給該對象(即 this 指向該對象)
(3)執行構造函數的代碼
(4)返回該新對象
注意:new 關鍵字的重要做用就是把 實例對象的 this 與 原型鏈相關聯


七、數組的index(array[-5]=?)

let a=[1,2,3]
    //-1 至關於 a.length-1=2
    console.log(a[2])
    //-3 至關於 a.length-3=0
    console.log(a[0])
    
    //-5 至關於 a.length-5=-2
    //-2 至關於 a.length-2=1
    //即 -5 至關於a[1]
    console.log(a[1])

八、antd的<Input>的 allowClear 做用是清除value的值,若是你的value是保存在state裏的話,也是能夠清除的

<Input 
    value={this.state.value}
    allowClear
/>

九、對象有中文屬性,如何經過解構賦值的方式去獲取中文屬性?

let obj={'哈哈':1}
  const {'哈哈':b}=obj
  const {a:{'嘿嘿':b}}=obj 
  console.log(b,'b24') //1

十、對象解構賦默認值

//默認設爲noa
const {a='noa'}=obj
//默認設爲nob
const {a:{b='nob'}}=obj

(完)

相關文章
相關標籤/搜索