3.《JavaScript高級程序設計》回顧之引用類型(上)

這是我之前寫的文章,若是錯誤,請指正,謝謝!數組

最近從新把紅寶書拾起來複習了下,發現了好多遺忘的和遺漏的知識點,在這裏總結一下我發現的本身忽略的知識點,但願可以和你們一塊兒進步:)bash


引用類型

Object

對象類型轉換

對象類型的變量,在被轉爲數值類型時,例如Number(Obj)或者進行對比判斷如==的時候,會先調用對象的 valueOf 方法,若是 valueOf 方法不存在的話,則會調用 toString 方法,而後把調用獲得的結果轉換爲數值,舉個例子:函數

const obj = {
  a: 1,
  valueOf: function() {
    return 2;
  },
  toString: function() {
    return 3;
  }
};
console.log(Number(obj)); // 2
console.log(obj == 2); // true
複製代碼
const obj = {
  a: 1,
  toString: function() {
    return 3;
  }
};
console.log(Number(obj)); // 3
console.log(obj == 3); // true
複製代碼

可是要注意的是,使用===來判斷是沒法經過的,由於會判斷左端和右端的類型是否相同。性能

Array

length屬性

數組的length屬性表示數組的有多少項,這個屬性是能夠修改的,經過設置這個屬性可以在數組的末尾移出或者添加項,舉個例子:ui

const array = [1, 2, 3, 4, 5, 6];
console.log(array.length); // 6
array.length = 3;
console.log(array); // [1, 2, 3]
array.length = 5;
console.log(array);  // [1, 2, 3, , ]
複製代碼

減小length能夠移除數組末尾的項,而增長 length 會在數組末尾添加空數組項。this

判斷是不是數組

判斷一個數組是數組的方法:array instanceof Array 擴展:在ES6中,可使用Array.isArray(array)方法來判斷編碼

Array重寫的方法

valueOf:返回數組自身; toString:spa

  1. 數組的每一項調用toString()方法;
  2. 獲得的各個結果用逗號分隔生成新的字符串返回;

toLocaleString:數組的每一項調用 toLocaleString 方法,其餘的和 toSting 同樣 join:code

  1. 數組的每一項調用 toString 方法;
  2. 傳入的參數調用 toString 方法;
  3. 1獲得的結果用2獲得的結果來分隔;
  4. 不傳參數或者傳入的參數若是是 undefined,則用默認的逗號來分隔;
  5. 傳入的參數若是是 null,用 null 的字符串來分隔;
  6. 不能傳入 Symbol 類型的數據做爲參數,不然會報錯;

值得注意的是,若是數組的某一項若是是null或者undefined,那麼在調用上述的 toString、toLocaleString、join 方法時會被當總空數組項來處理。對象

splice方法

array.splice(start, length, ...otherArguments)刪除或者添加數組項

  1. start: 開始操做的數組項下標;
  2. length:須要刪除的數組項個數,從 start 位置開始刪除,返回的結果爲刪除的數組項組成的新數組;
  3. otherArguments:須要插入的新的數組項,從第三個參數開始,會在 start 位置依次插入傳入的參數,本來 start 位置的數組項會被日後推移; 須要注意的是,splice 方法會修改原來的數組,不是一個函數式的方法,舉個例子:
const array = ["a", "b", "c", "d", "e", "f"];
const newArr = array.splice(1, 2);
console.log(newArr); // ["b", "c"]
console.log(array); // ["a", "d", "e", "f"]
array.splice(2, 1, 2, ["a"]);
console.log(array); // ["a", "d", "e", 1, 2, ["a"],  "f"]
複製代碼

基本包裝類型

  1. 基本類型的值調用方法的過程,以"this is a string".subString()爲例子:
const str1 = String("this is a string"); // 建立一個String類型的實例
const str2 = str1.subString(); // 調用指定方法
str1 = null; // 銷燬實例
複製代碼
  1. 使用Object構造函數建立實例時,會根據傳入的值返回相應的基本包裝類型的實例,舉個例子:
const str = Object("123");
console.log(str instanceof String); //true
const num = Object(123);
console.log(num instanceof Number); // true
複製代碼
  1. 若是使用 new 調用 String 等構造函數來建立實例,那麼這個實例的數據類型就是"object",舉個例子:
const str = new String("str");
console.log(typeof str); // "object"
console.log(str instanceof String); // true
複製代碼

Boolean

  1. new Boolean建立實例是引用類型的Boolean值;
  2. valueOf:返回布爾值 true 或者 false ;
  3. toString:返回字符串形式的 "true" 或者 "false";

String

  1. new String方式建立的實例是引用類型的String值;
  2. valueOf、toString、toLocaleString 返回基本數值類型的字符串;
  3. length 屬性:表示這個引用類型的字符串是由多少個字符組成的;
  4. chartAt:接收一個數值參數;若是參數是可以成功轉換爲數值,則返回參數所在位置的字符,不然返回第一個字符,舉個例子:
const str = new String("this is a string");
console.log(str.charAt(1)); // "h"
console.log(str.charAt("1")); // "h"
console.log(str.charAt("a")); // "t"
複製代碼
  1. chartCodeAt:邏輯和 chartAt相同,返回值爲獲得的字符的字符編碼(ASCII 碼);
  2. concat:將2個或多個字符串合併後返回新的基本數值類型的字符串,這個方法不會改變原有字符串,舉個例子:
const str = new String("str");
console.log(str.concat("aaa", "bbb")); // "straaabbb"
console.log(str); // String {"str"}
複製代碼
  1. slice、substring、substr:截取原有字符串的一部分,生成新的字符串;

  2. slice:

    • 第一個參數表示開始截取的位置;
    • 第二個參數表示結束位置,不會被截取到;
    • 若是參數是負數,將參數和字符串的長度相加以後再使用;
  3. substring:

    • 參數和 slice 方法同樣;
    • 若是參數是負數,將參數轉換爲0後再使用;
  4. substr:

    • 第一個參數表示開始位置;
    • 第二個參數表示要截取的字符長度;
    • 若是參數是負數,第一個參數會和字符串長度相加,第二個參數會轉換爲0,而後再使用參數;
  5. indexOf 和 lastIndexOf 方法查找的時候使用的是 ===,而且這兩個方法的第二個參數表示從字符串的第幾個位置開始查找;

  6. indexOf:從前日後搜索,返回所傳參數在字符串中的第一個位置,不存在返回-1;

  7. lastIndexOf:從後往前搜索,返回所傳參數在字符串中的第一個位置,不存在返回-1;

  8. trim:刪除字符串兩端的空格,返回新的字符串;

  9. localeCompare:比較兩個字符串在字母表中的位置,返回結果會隨着國家和地區變化;

    • 若是參數在字符串以前,返回正數;
    • 若是相等,返回0;
    • 若是參數在字符串以後,返回負數 ;
  10. fromChartCode:根據字符編碼返回字符串

Number

  1. new Number 建立實例是引用類型的Number值
  2. valueOf:返回基本類型值的數值;
  3. toString 和 toLocaleString:返回字符串形式的數值;能夠傳入一個參數,表示要返回幾進制數職的字符串形式;
  4. toFixed:按照指定的小數位返回數值的字符串形式,按標準可以返回0-20位的小數;
  5. toExponential:格式化數值,返回指數表示法的字符串形式的數字,舉個例子:
const num = new Number(12345);
console.log(num.toExponential(2)); // 1.23e+4
複製代碼
  1. toPrecision:
    • 接受一個參數,返回字符串形式的數值;
    • 參數表示要返回的數值的位數;
    • 按標準能夠返回1-21位小數

感謝閱讀,我的成果,請勿轉載:)

相關文章
相關標籤/搜索