我只能幫你到這兒了:程式設計師賺外快指南
阿新 • • 發佈:2020-10-16
ECMA-262物件的定義:無序屬性的集合,其屬性可以包含基本值,物件,或者函式。可以將物件想象成散列表:鍵值對,其中值可以是資料或者函式。ECMAScript中的物件其實就是一組資料(屬性)和功能(方法)的集合。
- 建立
- 物件字面量
- var o={ key:value, key2:value }
- 建構函式
- var o=new Object();
- o.name='lisa';
- o.age=20;
- 物件字面量
- 訪問物件屬性
- 點操作符
- console.log(o.name);
- []
- [""]:o["name"] 必須是字串型別,對於變數的訪問或者複雜的識別符號名稱訪問比較容易
- 點操作符
- 刪除物件屬性
- delete o.name
- 檢測屬性
- in :檢測當前的屬性是否為物件的私有/繼承屬性,如果不存在返回false
- hasOwnProperty():檢測給定的屬性是否是物件的自有屬性,對於繼承屬性將返回false
- propertyIsEnumerable():檢測給定的屬性是否是該物件的自有屬性,並且該屬性是可列舉的。通常由JS程式碼建立的屬性都是可列舉的,但是可以使用特殊的方法改變可列舉性。
物件序列化
物件序列化是指將物件的狀態轉換為字串,也可以反序列化,將字串還原為物件函式,RegExp,Error物件,undefined值不能序列化和反序列化。
- JSON.stringify() : 將物件型別轉換為json字串
- JSON.parse():將json字串型別轉化為物件
建構函式和原型物件
所有的函式都有一個原型物件
所有的物件都有一個constructor屬性
prototype: 原型物件
constructor:建構函式
- 靜態屬性/方法:宣告在函式本身內部,只能函式本身呼叫
- Object.assign(a,b):將b物件合併到a物件中
- Object.keys():當前物件的所有屬性名所組成的陣列
- Object.values(): 當前物件的所有屬性值所組成的陣列
- Object.defileProperty():定義屬性
- 非靜態屬性/方法:宣告在函式的原型物件中,所有例項物件均可以呼叫
- constructor:構造者
- Object.prototype.constructor
- new Object().constructor
- toString()
- valueof()
- hasOwnProperty()
- propertyIsEnumerable() 測試屬性是否可以遍歷
- constructor:構造者
- Object.defileProperty(obj,key,{}):定義屬性
- {}:
- 基礎屬性描述
- value:' ' ; 設定屬性值
- writable: 是否可寫,預設false
- enumerable:是否可遍歷,預設false
- configurable:當前屬性是否可配置/刪除,預設false
- 存取操作符
- 不能和value同時使用
- set:function
- get:function
- 基礎屬性描述
- {}:
this是函式內的一個方法,代表函式得執行環境。this指向函式的執行環境,誰呼叫指向誰。如果沒有呼叫的 就指向全域性環境。