1. 程式人生 > >JS 2018.11.5

JS 2018.11.5

一、.函式:

  函式在呼叫的時候,會形成一個私有作用域,內部的變數不會被外部訪問,這種保護機制叫閉包。這就意味著函式呼叫完畢,這個函式形成的棧記憶體會被銷燬。

 

但有時我們不希望它被銷燬。

 函式歸屬誰跟它在哪呼叫沒有關係,跟在哪定義有關。

  fn()呼叫完畢後得到的是一個匿名函式,但是這個函式在fn這個作用域下定義的,所以這個匿名函式內部的變數在fn作用域下查詢。這種寫法可以使函式內部的變數不被銷燬。

補充:每個函式都天然自帶一個return,如果寫return返回什麼就是什麼,如果不寫就是undefined。類的本質也是函式,裡面也有return,但預設是object,如果強制return一個值不會造成影響,如果return是物件 就會產生影響。

 

二、基類object的子類:

  Function, Number, Boolean, String, Array, Date, Math, RegExp(正則)都是類,類的本質是一個函式。caller指向函式本身。

1.string類:

定義字串的方法;

  

定義字串的方法:
var st=new string("hello world")
簡寫:var st=‘nh’

 (1)字串的加號運算:+僅僅就是拼接,這種方法叫字串拼接。

 (2)字串prototype上的方法:

        <1>charAt()返回在指定位置的字元,

              

   <2>concat() 連線兩個或多個字串並返回新的字串;

              

   <3>indexOf() 檢索某個字元在字串中首次出現的位置,沒有就返回-1.

     

   <4>lastIndexOf() 功能和indexOf一樣,不過是從後往前

   <5>match()

   <6>search()

   <7>replace()

   <8>slice() 擷取字串中的一部分,前閉後開。

     

  前閉後開,包含2但不包含7

   <9>splite() 將字串按某種形式分割成陣列。

    

   <10>substr() 也是擷取,和slice有點區別。

     

 

   <11>substring() 和slice一樣

   <12>toLowerCase() 將字串中的字元都變成小寫

   <13>toUpperCase()將字串中的字元都變成大寫

   <14>trim() 去除字串兩端的空白

2.Array陣列:

  陣列的定義:var arr=new array("")

     簡寫:var arr=[12,"zhangsan"]

  基本的方法:

  <1>push() 在陣列的結尾處新增一個新元素,返回值是陣列長度。

   

  <2>unshift() 在陣列的開始處新增一個新元素,返回值是陣列長度。

   

  <3>pop( )刪除陣列中的最後一個元素,返回值是刪除的那個元素

   

  <4>shift() 刪除陣列中的第一個元素,返回值是刪除的那個元素

   

  <5>slice() 擷取陣列中的一部分 並返回新的陣列

   

  <6>splice() 在陣列中新增或刪除元素

   

  <7>sort() 給陣列中的元素進行排序

       <8>reverse()反轉陣列中的元素順序(倒序)

  <9>toString()將陣列轉化成字串,並返回結果

   

  <10>concat() 合併多個數組並返回新的

   

  <11>indexOf() 檢索陣列中的元素,並返回他所在的位置,沒有就是-1.

   

 

陣列經典面試題----- 陣列去重