【冰山白皮書】JS中的對象

圖片描述

關於咱們

QQ答疑交流羣:
600633658html

咱們的連接:前端

知乎 掘金 今日頭條 新浪微博 前端網 思否 簡書 B站正則表達式

什麼是對象

  1. 是由屬性以及屬性所對應的值組成的合集,是沒有順序的
  2. 除6種原始數據類型以外,全部的數據都是對象。

對象和原始類型區別segmentfault

  1. 對象有屬性,屬性所對應的值能夠是原始數據類型,也能夠是方法,還能夠是對象
  2. 對象有方法,方法是一種特殊的屬性,對應的值是一個函數,用於實現某種功能,因而可知函數也是對象。數組

    (回顧爲何String Number Boolean也可使用方法或者調用屬性)
  3. 對象是可變的,改變的本質是對象屬性發生了變化。

對象的分類

內部對象瀏覽器

  • 錯誤對象:Error
  • 本地對象:Boolean String Number Array Date Function Object RegExp
  • 內置對象:解釋器內置,不須要使用New global Math Json

宿主對象函數

運行環境提供的對象:window documentspa

自定義對象code

開發者本身建立的對象htm

原始類型轉換到對象

  • Object(true)----{[[PrimitiveValue]]: true}
  • Object(123)----{[[PrimitiveValue]]: 123}
  • Object("abc")——{0:'a',1:'b',2:'c',length:3,[[PrimitiveValue]]: true}
  • Object(null)----{}
  • Object(undefined)----{}

聯繫上文對象和原始類型區別)

對象上的兩個基礎方法

toString

  1. 將當前對象用字符串表示出來。
  2. 全部的內部對象和宿主對象都重寫了toString方法。

    • Boolean String Number直接返回對應的字符串。
    • Array:爲數組的每一項調用toString方法並將結果用逗號鏈接
    • Date:返回一個由日期和時間組成的字符串(不一樣的環境下結果不同)
    • Function:返回函數體內部的源碼
    • Object:返回[object object]
    • RegExp:返回正則表達式的直接量字符串(帶轉義符)
  3. 能夠接受一個2~36的數字做爲參數,表示須要轉換的內容是幾進制的

valueOf

  1. 有原始值返回原始值
  2. 沒有原始值返回自己
  3. Date對象返回距離1970年1月1日0點的毫秒數

對象轉換到原始類型

  1. Boolean:全部的對象轉換到布爾類型都爲true.(JS中只有6個值能轉成false)
  2. String:先調用toString方法,再調用valueOf方法
  3. Number:先調用valueOf方法,再調用toString方法

如何建立一個對象

  1. 使用字符字面量的方式(最簡單)

    var o={age:123}
    注意:屬性名中若是有空格,連字符,關鍵字或者保留字的時候必須使用引號(在ES5中保留字能夠不使用引號,可是不建議這麼作)最後一個逗號須要刪除,不然在IE7及如下的瀏覽器中會報錯
  2. 使用new操做符(最標準)

    var o=new Object()
    
    var s=new String(‘abcd’)
    
    var n=new Number(123)
    
    var a=new Array(3)
    
    var d=new Date(2017/04/15)
    var a=new Array 沒有參數的時候能夠不寫括號
  3. 使用ES5中的新方法(最精確,最麻煩)

    Object.creat()
    接受兩個參數:1要繼承的原型,2對象的詳細描述

對象的屬性的獲取

兩種寫法:點或者方括號,點後面放屬性名稱,括號裏面放表達式

屬性獲取過程詳解

當JS的解釋器在代碼中遇到「.」或者 「[ ]」的時候將進行如下操做

  1. 對「.」或者 「[ ]」前面的表達式進行計算並獲取結果
  2. 若是是undefined或null直接報錯
  3. 若是不是對象就轉換成對應的對象
  4. 若是是「.」,則查找對應的屬性
  5. 若是是 「[ ]」,先計算「[ ]」裏面的表達式,再將結果轉換爲字符串,並查找對應的屬性
  6. 若是該屬性存在則返回對應的值
  7. 若是該屬性不存在則返回undefined
相關文章
相關標籤/搜索