1. 程式人生 > >JS基礎(1)

JS基礎(1)

tro 月份 其中 文檔對象模型 [] 單標簽 這就是 主機 切割

JS分為三部分:

  ECMAScript標準 js基本語法

  DOM 文檔對象模型    DOM提供了方法操作DOM樹上的節點

  BOM 瀏覽器對象模型   通過BOM可以 獲得屏幕分辨率 控制瀏覽器跳轉 彈出框

  BOM中的頂級對象就是window,DOM中的頂級對象是document。document是window的一個子對象。

    window.onload(){}

    setInterval()  clearInterval()

    setTimeout()  clearTimeout()

    Location 對象

      包含的屬性有 hash(地址欄#後的內容)、href(地址)、protocol(協議)、port(端口)、

             host(主機和端口號)、hostname(主機名字)、pathname(路徑名字)、search(搜索的內容:獲取的?後的內容)

      location.assign() //和location.href一樣的操作

      location.replace() //替換的地址,沒有歷史記錄

      location.reload() //頁面重新加載

    History 對象

      historty.forward();  //前進

      history.back()    //後退

      history.go()     //正數就是前進,負數就是後退

  DOM對象:

    普通的標簽的屬性:src/href/title/width/height/...

    表單標簽的屬性:name/value/type/checked/disabled/selected/...

    document.getElementById(‘div‘);      //返回一個ID屬性為‘div’的對象

    document.getElementByTagName(‘div‘);   //返回由所有div標簽的組成的數組

    document.getElementByClassName(‘div‘);  //返回所有含有類名為‘div’的元素數組

    document.getElementByName(‘div‘);     //返回含有屬性名為‘div’的元素數組

    document.querySelector("a[targe]");返回第一個含有target屬性的<a>元素

    document.querySelectorAll(".example");返回是多個含有類名為example的元素的數組

js有五種基本數據類型:

  number / string / boolean / undefined / null    (可使用 typeof方法 來判斷基礎對象類型)

引用型數據類型:

  function / object

  其中需要註意的是:

    引用數據類型會開辟出堆內存,它們指向的是 內存地址。

    字符串 之間用 ‘+‘ 會拼接字符串,如果其他類型數據和字符串拼接,會被轉換為字符串,這其中涉及到變量的隱式轉換

類型轉換:

  數字類型轉換:

    parseInt() / parseFloat() / Number()

    總結:想要轉整數用parseInt(),想要轉小數用parseFloat(),想要轉數字:Number();要比上面的兩種方式嚴格。

  其他類型轉換:

    .toString() / String() / Boolean()

  補充:

    NaN 不是一個數字,或者不是數字與數字的計算就會得到 NaN (isNaN() 判斷一個值是不是 NaN)

    ! 表示非, !false == true 的結果為true

操作符:

  算數運算符:+ - * / %

  算數運算表達式:由算數運算符連接起來的表達式

  一元運算符:++ --

  二元操作符: && ||

  三元操作符: 條件?結果1 : 結果2

  復合運算符: += -= *= /= %=

  復合運算表達式:由復合運算符連接起來的表達式

流程控制:

  if(){  } else if(){  }else{  }

  switch(){ case :;default: ; }

  while(){  } / do{  }while() / for( ; ; ){  }

  其中:

    break 用來取消後續循環,continue 用來取消本次循環。

    switch中的條件判斷 使用的是嚴格模式的全等於。

JS內置對象:

  實例方法---->必須要通過new的方式創建的對象(實例對象)來調用的方法

  靜態方法---->直接通過大寫的構造函數的名字調用的方法(直接通過大寫的對象名字調用的)

  Array 創建方式有兩種: 可以直接通過字面量創建 / 通過構造函數進行創建 : var a =[] / var a = new Array()

    Array對象的靜態方法:

      Array.isArray(對象)  //判斷這個對象是不是數組

    Array對象的實例方法:

      .concat(數組,數組,..)組合一個新數組

      .every(函數)--返回值是布爾類型,函數作為參數使用,函數中有三個參數,第一個參數是元素的值,第二個參數是索引值,第三個參數是原來的數組(沒用)

      ,如果這個數組中的每個元素的值都符合條件,最後才返回的是true

      .filter(函數);返回的是數組中每一個元素都復合條件的元素,組成了一個新的數組

      .push(值);--->把值追加到數組中,加到最後了---返回值也是追加數據之後的數組長度

      .pop();--->刪除數組中最後一個元素,返回值就是刪除的這個值

      .shift();--->刪除數組中第一個元素,返回值就是刪除的這個值

      .unshift();--->向數組的第一個元素前面插入一個新的元素,----返回值是插入後的程度

      .forEach(函數)方法---遍歷數組用---相當於for循環

      .indexOf(元素值);返回的是索引,沒有則是-1

      .join("字符串");----返回的是一個字符串

      .map(函數);--->數組中的每個元素都要執行這個函數,把執行後的結果重新的全部的放在一個新的數組中

      .reverse();----->反轉數組

      .sort();---排序的,可能不穩定,如果不穩定,請寫MDN中的那個固定的代碼

      .slice(開始的索引,結束的索引);把截取的數組的值放在一個新的數組中,但是不包含結束的索引對應的元素值

      .splice(開始的位置,要刪除的個數,替換的元素的值);一般是用於刪除數組中的元素,或者是替換元素,或者是插入元素

  Math 對象 :

    Math對象的靜態方法:

      Math.PI ---π---

      Math.sqrt() ---取平方根---

      Math.pow(a,b) ---a的b次方---

      Math.E ---自然常數---

      Math.abs ---絕對值---

      Math.ceil ---向下取整---

      Math.floor ---向上取整---

      Math.Max() ---取最大值---

      Math.Min() ---取最小值---

      Math.random() ---取0-1之間隨機值(不包括1)---

  Date 對象

    Date對象的靜態方法:

      Date.now()          //獲取當前時間

    Date對象的實例方法:

      .getFullYear()       //獲取年份

      .getMonth()        //獲取月份從0開始

      .getDate()         //獲取日

      .getHours()       //獲取小時

      .getMinutes()       //獲取分鐘

      .getSeconds()       //獲取秒數

      .getDay()        //獲取星期數

      .toLocaleDateString()   //"2019/1/25"

      .toLocaleTimeString()  //"下午2:20:26"

      .valueOf()        //1548397226024

      .toString()        //"Fri Jan 25 2019 14:20:26 GMT+0800 (中國標準時間)"

  String 對象

    字符串可以看作是由很多字符組成的數組,字符串有不可變的特性,字符串的值之所以看起來是改變的,那是因為指向改變了,並不是真的值改變了。

    字符串的常用屬性:
      .length------>字符串的長度

      .charAt(索引),返回值是指定索引位置的字符串,超出索引,結果是空字符串

      .fromCharCode(數字值,可以是多個參數),返回的是ASCII碼對應的值

      .concat(字符串1,字符串2,...);返回的是拼接之後的新的字符串

      .indexOf(要找的字符串,從某個位置開始的索引);返回的是這個字符串的索引值,沒找到則返回-1

      .lastIndexOf(要找的字符串);從後向前找,但是索引仍然是從左向右的方式,找不到則返回-1

      .replace("原來的字符串","新的字符串");用來替換字符串的

      .slice(開始的索引,結束的索引); 從索引5的位置開始提取,到索引為10的前一個結束,沒有10,並返回這個提取後的字符串

      .split("要幹掉的字符串",切割後留下的個數);切割字符串

      .substr(開始的位置,個數);返回的是截取後的新的字符串

      .substring(開始的索引,結束的索引),返回截取後的字符串,不包含結束的索引的字符串

      .toLocaleLowerCase();轉小寫

      .toLowerCase();轉小寫

      .toLocaleUpperCase()轉大寫

      .toUpperCase();轉大寫

      .trim();幹掉字符串兩端的空格

作用域:

  分為全局作用域和局部作用域,根據所在的作用域不同,變量又分為全局變量和局部變量。

    其中還有塊級作用域,被‘{ }‘包裹就可以看成一個塊,其實的變量定義,使用var 定義可以被外部使用, 使用 const、let 不可以被外部使用。

    局部變量在函數作用域銷毀時,就會被釋放,而全局變量一旦被創建,就不會被釋放,除非頁面關閉(但是隱式全局變量可以被銷毀,沒有使用var聲明的全局變量)。

  在所有作用域創建的時候,js引擎會有一個處理,預解釋,它所做的事,就是提前把所有的變量聲明了,所有的函數聲明並定義了(所以你可以在定義函數之前來調用這個函數)。

    預解釋中的變量提升,只會提升到當前作用域的最前面,而不是其他作用域。

    預解析會分段(多對的script標簽中函數重名,預解析的時候不會沖突)。

JSON對象

  一組無序屬性的集合的鍵值對,屬性的值可以是任意類型,這就是對象。JSON也是一個對象,數據都是成對的,一般json格式的數據無論是鍵還是值都是用雙引號括起來的。

  JSON對象擁有兩個方法,parseInt() (將字符串轉換為JSON對象)和 stringify() (將JSON對象轉換為字符串),這兩個一般用於 數據存儲或者與後臺交互。

  遍歷對象:

  for(var key in json ){

    console.log(key +‘===========‘ + json[key]);

  }

JS基礎(1)