關於我們
QQ答疑交流群:
600633658
我們的連結: 知乎 掘金 今日頭條 新浪微博 前端網 思否 簡書 B站
什麼是物件
- 是由屬性以及屬性所對應的值組成的合集,是沒有順序的
- 除6種原始資料型別之外,所有的資料都是物件
物件和原始型別區別
- 物件有屬性,屬性所對應的值可以是原始資料型別,也可以是方法,還可以是物件
- 物件有方法,方法是一種特殊的屬性,對應的值是一個函式,用於實現某種功能,由此可見函式也是物件
- (回顧為什麼String Number Boolean也可以使用方法或者呼叫屬性)
- 物件是可變的,改變的本質是物件屬性發生了變化
物件的分類
內部物件
- 錯誤物件:Error
- 本地物件:Boolean String Number Array Date Function Object RegExp
- 內建物件:直譯器內建,不需要使用new global Math Json
宿主物件
執行環境提供的物件:window document
自定義物件
開發者自己建立的物件
原始型別轉換到物件
- 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
- 將當前物件用字串表示出來。
- 所有的內部物件和宿主物件都重寫了toString方法
- Boolean String Number直接返回對應的字串
- Array:為陣列的每一項呼叫toString方法並將結果用逗號連線
- Date:返回一個由日期和時間組成的字串(不同的環境下結果不一樣)
- Function:返回函式體內部的原始碼
- Object:返回[object object]
- RegExp:返回正規表示式的直接量字串(帶轉義符)
- 可以接受一個2~36的數字作為引數,表示需要轉換的內容是幾進位制的
valueOf
- 有原始值返回原始值
- 沒有原始值返回本身
- Date物件返回距離1970年1月1日0點的毫秒數
物件轉換到原始型別
- Boolean:所有的物件轉換到布林型別都為true.(JS中只有6個值能轉成false)
- String:先呼叫toString方法,再呼叫valueOf方法
- 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的直譯器在程式碼中遇到“.”或者 “[ ]”的時候將進行以下操作
- 對“.”或者 “[ ]”前面的表示式進行計算並獲取結果
- 如果是undefined或null直接報錯
- 如果不是物件就轉換成對應的物件
- 如果是“.”,則查詢對應的屬性
- 如果是 “[ ]”,先計算“[ ]”裡面的表示式,再將結果轉換為字串,並查詢對應的屬性
- 如果該屬性存在則返回對應的值
- 如果該屬性不存在則返回undefined