JavaScript引用類型

Object類型

建立Object對象有兩種方式:javascript

  • new Object()
  • 對象字面量表示法

對象字面量表示法定義對象時,實際上不會調用Object的構造函數(Firefox2及更早版本除外)前端

Array類型

建立Array對象有兩種方式:java

  • new Array()
  • 數組字面量表示法

檢測數組類型

instanceof操做符的不足:windows

若是同個WEB頁面存在多個框架,框架1裏建立一個數組array,在框架2中用instanceof檢測數組array,返回結果並非true,而是false。這是由於array instanceof Array實際上至關於windows1.array instanceof windows2.Array數組

Array.isArray()方法用來檢測某對象是否時數組,它的不足之處是部分瀏覽器版本不支持該方法。瀏覽器

轉換方法

  • 數組轉字符串app

    toString()toLocalString()valueOf()方法能夠將數組轉換爲字符串,每項以,分隔框架

  • 自定義分隔符函數

    join()方法,能夠指定字符串的分隔符this

重排序

  • 反轉數組

    reverse方法

  • sort方法

    該方法默認將每一個元素轉爲字符串比較大小,較小值在前端。它也能夠接受一個比較函數:函數接受兩個參數,當返回值爲-1時,說明前一項值比後一項值小,當返回值爲0時,說明前一項值和後一項值相等,當返回值爲1時,說明前一項值比後一項值大

操做方法

  • concat

    獲取當前數組的副本,並在這個副本末尾添加新元素,返回這個副本數組

  • slice

    返回當前數組的一個子序列數組,起始位置必須傳入,結束位置是可選參數

  • splice

    操做數組中間的元素,能夠實現刪除、插入、替換三中操做。它必須傳入起始位置、要刪除的元素數量兩個參數,插入或替換的內容是可選參數

迭代方法

迭代方法接受兩個參數:

  1. 在每一項上運行的函數
  2. 第一個參數函數的執行環境的變量對象

傳入的函數接受三個參數:

  1. 數組元素值
  2. 元素在數組中的索引
  3. 數組對象自己

縮小方法

reduce()reduceRight()方法,會迭代數組的全部項,而後構建一個最終返回的值。它接受一或兩個參數:

  1. 在每一項上調用的函數
  2. 可選的初始值

被調用的函數接受四個參數:

  1. 前一個值
  2. 當前值
  3. 元素的索引
  4. 數組對象

第一次迭代發生在數組的第二項上,函數返回的任何值都會做爲第一個參數自動傳給下一項。

Date類型

var date = new Date()

當不傳遞參數時,新建立的對象自動得到當前日期和時間。若是想指定日期,則須要傳入表示該日期的毫秒數。爲了簡化這一計算過程,ECMAScript提供了兩個方法Date.parse()Date.UTC()將特定的日期轉換爲毫秒數,再經過Date構造函數建立新對象。

var time = new Date(Date.parse("May 25,2018"));
var time2 = new Date(Date.UTC(2018,10,13,23,22,10));

Function類型

定義函數有兩種方式:

  • 函數聲明

    function sum(arg1,arg2) {
      body //函數體
    }
  • 函數表達式

    var sum = function(args1,arg2) {
      body //函數體
    };

函數聲明和函數表達式的差別是解析器讀取時間不同。解析器在執行環境中加載數據時,會率先讀取函數聲明,並使其在執行任何代碼前可用,這稱爲函數聲明提高;至於函數表達式,則必須等到解析器執行到它所在的代碼行,纔會真正被解釋執行。

函數內部屬性arguments和this

  • arguments屬性

    它的主要用途是保存函數參數。arguments對象的callee屬性,是一個指針,指向擁有這個arguments對象的函數對象。

  • this

    this表示調用當前函數的對象。

apply、call、bind

這三個方法均可以指定this表示的對象,applycall方法會首先指定this表示的對象,而後再執行當前函數;bind方法會建立一個函數的實例,其this值會被綁定到指定的對象上,這個函數不會自動執行,必須再手動調用一次。

基本包裝類型

var s1 = "some text";
var s2 = s1.substring(2);

當執行流訪問到第二行時,首先建立String包裝類型的一個實例,而後在實例上調用指定的方法,最後銷燬這個實例。

引用類型與基本包裝類型的主要區別就是對象的生存期。使用new操做符建立的引用類型的實例,在執行流離開當前做用域以前都一直保存在內存中。而自動建立的基本包裝類型的對象,則只存在於一行代碼的執行瞬間,而後當即銷燬。這意味着咱們不能在運行時爲基本類型值添加屬性和方法。

單體內置對象

內置對象指由ECMAScript實現提供的、不依賴宿主環境的對象,這些對象在ECMAScript程序執行前就已經存在了。這意味着開發人員沒必要顯示地實例化內置對象,由於它們已經實例化了

在全部代碼執行以前,做用域中就已經存在兩個內置對象:GlobalMath。在大多數ECMAScript實現中都不能直接訪問Global對象;不過,Web瀏覽器實現了承擔該角色的windows對象。全局變量和函數都是Global對象的屬性。

相關文章
相關標籤/搜索