JavaScript高級程序設計----讀書筆記,第五章

  1. 引用類型的值(對象)是引用類型的一個實例,在 ECMAScript 中,引用類型是一種數據結構,用於將數據和功能組織在一起,常被稱作類。但是它不具備傳統面嚮對象語言所支持的類和接口等基本結構,所以並不是相同的概念。
  2. Object 類型
    • 創建 Object 類型實例的方式有兩種:
      • 用 new var person = new Object();
      • 用對象字面量 var person = { 屬性:屬性值 } (用得較多)
    • 訪問對象屬性的方式也有兩種:
      • 點表示法,person.name(用得較多)
      • 方括號表示法,person["name"]
  3. Array 類型

    • JavaScript 中的數組每一項可以保存任意類型的數據,第一個位置保存數值,第二個保存字符串;並且數組的大小是可以動態調整的,可以隨着數據的添加自動增長以容納新數據。
    • 創建方式:var arr = new Array(數組長度);或者 var arr = [1,2,3,...]
    • length,數組的長度(多少項)保存在 length 屬性中,通過設置這個屬性值可以從數組的末尾移除舊項或者添加新項。
    • 檢測數組Array.isArray(數組);檢測是否是數組。
    • 轉換方法toString()、valueof()、toLocaleString(),轉換爲每個項的字符串表示。toLocaleString()取每一項的值調用的是每一項的 toLocaleString() 方法,而不是toString()方法。
    • 棧,數組可以表現得像棧一樣,先進後出。JavaScript提供了 push() 和 pop() 方法去實現類似棧的行爲。
    • 隊列,數組可以表現得像隊列一樣,先進先出。push() 和 shift() 去實現類似隊列的行爲。
    • 重排序方法:reversse() 反轉數組,sort() 排序 。sort() 調用每個數組項的 toString() 方法,然後比較字符串,所以通常情況下數字比較大小結果不對,因此 sort() 可以接受一個比較函數作爲參數,決定值的順序。

      function compare(value1, value2) {
          if (value1 < value2) {
              return -1;
          } else if (value1 > value2) {
              return 1;
          } else {
              return 0
          }
      }
      
      var values = [0,1,5,10,15];
      values.sort(compare);
      alter(values); // 0,1,5,10,15
      
    • 其他各種重要方法,查書吧!
  4. Date 類型
    • 創建 var now = new Date();,若不傳入參數,自動獲得當前日期和時間。如果想根據特定日期和時間創建日期對象,必須傳入指定日期的毫秒數,JavaScript提供了兩種方法取得這一數值 Date.parse() 和 Date.UTC()(具體使用請看書)。
    • 日期格式化方法,日期時間組件方法,查書查書。
  5. RegExp 類型
    • JavaScript 通過 RegExp 類型來支持正則表達式,不懂正則暫時不看。
  6. Function 類型(函數實際上是對象,每個函數都是 Function 類型的實例)

    • 因爲函數是對象,所以是一個變量,如果函數允許重載,那麼就定義了兩個名稱相同的變量第二個就會覆蓋第一個變量(函數)。所以 JavaScript 沒有函數重載。
    • 在函數內部有兩個特殊的對象:arguments(類數組對象,包含着傳入函數中的所有參數。該對象擁有 callee 指針屬性指向 arguments 對象的函數) 和 this (行爲同 Java 中的 this).
    • 函數的屬性和方法

      • 屬性:length 參數的個數長度;prototype,對於 JavaScript 中的引用類型而言,該屬性是保存他們實例方法的真正所在。
      • 方法:apply()、call(),在特定的作用域中調用函數,實際上等於設置函數體內 this 對象的值。兩個函數都需要傳入兩個參數,第一個參數是在其中運行函數的作用域,另一個是參數數組。二者第二個參數傳入方式不同,apply()是參數數組或arguments,call()則必須明確地傳入每一個參數。
        function sum(num1, num2) {
            return num1 + num2;
        }
        
        function callSum1(num1, num2) {
            return sum.apply(this, arguments);
        }       
        
        function callSum2(num1, num2) {
            return sum.call(this, num1, num2);
        }
        
        alert(callSum1(10, 10));
        alert(callSum2(10, 10));
  7. 基本包裝類型(Boolean、Number、String)
    • 每當讀取一個基本類型數值的時候,後臺就會創建一個對應的基本包裝類型的對象,從而我們能後調用一些方法來操作這些數據。
    • 引用類型與基本包裝類型的主要區別就是對象的生存期,使用 new 操作符創建的引用類型的實例,在執行流離開當前作用域之前一直保存在內存中。而自動創建的基本包裝類型的對象,則只存在於一行代碼的執行瞬間,然後立即被銷燬。
    • Object 構造函數也會像工廠方法一樣,根據傳入值的類型返回相應基本包裝類型的實例。
  8. 單體內置對象
    • 定義。由 ECMAScript 實現提供的、不依賴於宿主環境的對象,這些對象在 ECMAScript 程序執行之前就已經存在了。如 Object、Array、String以及Global、Math。
    • Global,不屬於任何其他對象的屬性和方法,都是它的屬性和方法。全局變量和函數就是它的屬性和函數。
    • Math,JavaScript 中提供數學計算相關方法的對象。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章