1. 程式人生 > 實用技巧 >我只能幫你到這兒了:程式設計師賺外快指南

我只能幫你到這兒了:程式設計師賺外快指南

ECMA-262物件的定義:無序屬性的集合,其屬性可以包含基本值,物件,或者函式。可以將物件想象成散列表:鍵值對,其中值可以是資料或者函式。ECMAScript中的物件其實就是一組資料(屬性)和功能(方法)的集合

  1. 建立
    • 物件字面量
      • var o={ key:value, key2:value }
    • 建構函式
      • var o=new Object();
      • o.name='lisa';
      • o.age=20;
  2. 訪問物件屬性
    • 點操作符
      • console.log(o.name);
    • []
      • [""]:o["name"] 必須是字串型別,對於變數的訪問或者複雜的識別符號名稱訪問比較容易
  3. 刪除物件屬性
    • delete o.name
  4. 檢測屬性
    • in :檢測當前的屬性是否為物件的私有/繼承屬性,如果不存在返回false
    • hasOwnProperty():檢測給定的屬性是否是物件的自有屬性,對於繼承屬性將返回false
    • propertyIsEnumerable():檢測給定的屬性是否是該物件的自有屬性,並且該屬性是可列舉的。通常由JS程式碼建立的屬性都是可列舉的,但是可以使用特殊的方法改變可列舉性。

物件序列化

物件序列化是指將物件的狀態轉換為字串,也可以反序列化,將字串還原為物件函式,RegExp,Error物件,undefined值不能序列化和反序列化。

  • JSON.stringify() : 將物件型別轉換為json字串
  • JSON.parse():將json字串型別轉化為物件

建構函式和原型物件

所有的函式都有一個原型物件

所有的物件都有一個constructor屬性

prototype: 原型物件

constructor:建構函式

_proto_ 構造器原型
  • 靜態屬性/方法:宣告在函式本身內部,只能函式本身呼叫
    • Object.assign(a,b):將b物件合併到a物件中
    • Object.keys():當前物件的所有屬性名所組成的陣列
    • Object.values(): 當前物件的所有屬性值所組成的陣列
    • Object.defileProperty():定義屬性
  • 非靜態屬性/方法:宣告在函式的原型物件中,所有例項物件均可以呼叫
    • constructor:構造者
      • Object.prototype.constructor
      • new Object().constructor
    • toString()
    • valueof()
    • hasOwnProperty()
    • propertyIsEnumerable() 測試屬性是否可以遍歷
  • Object.defileProperty(obj,key,{}):定義屬性
    • {}:
      • 基礎屬性描述
        • value:' ' ; 設定屬性值
        • writable: 是否可寫,預設false
        • enumerable:是否可遍歷,預設false
        • configurable:當前屬性是否可配置/刪除,預設false
      • 存取操作符
        • 不能和value同時使用
        • set:function
        • get:function
存取操作符 this表示呼叫當前set的物件,也就是obj

this是函式內的一個方法,代表函式得執行環境。this指向函式的執行環境,誰呼叫指向誰。如果沒有呼叫的 就指向全域性環境。