JS面向對象特性和值類型與複合類型

JS面向對象之特性已經值類型與複合類型

一些屬性

  1. 空對象
    • 空對象也是對象, 只是有存變量的變量名, 沒有對象屬性
  1. var o ={};
  1. 參數傳遞
    • 值類型: 函數內外兩個變量, 兩個數據, 都不相同
    • 引用類型: 函數內外變量不一樣, 一個數據, 相同地址

賦值

  1. var num =123;
  2. var num2 = num;

值類型的賦值特色

  1. 將變量內的數據所有拷貝一份, 賦值的變量
  2. var num = 123 表示變量中存儲中的數字是 123
  3. 將 123 數據拷貝一份, 內存中有 2 個數據
  4. 將拷貝數據複製num2
  5. 特色是在內存中有2個數據副本

引用(複合)類型賦值

  1. var o ={ name :'張三'};
  2. var obj = o;
  1. 引用類型賦值就是將變量 o 中存儲的數據拷貝一份( 地址 ), 而後將數據賦值給obj
  2. 內存中只有1份數據
  3. 特色是兩個變量,一個數據,指向同一個地址

深拷貝與淺拷貝( 保證對象的屬性也是引用類型 )

  1. 深拷貝的概念數組

    • 拷貝的時候, 將數據中的全部引用類型的值, 所有拷貝一份, 數據在內存中獨立, 就是深拷貝
    • 修改拷貝數據和源數據, 沒有聯繫
    • 特色: 內存隔離,徹底獨立
  2. 淺拷貝的概念函數

    • 拷貝的時候, 只針對當前對象的屬性進行拷貝, 而引用類型不考慮

對象的動態特性

  1. 在 js 中, 一個對象須要屬性, 就能夠利用 對象.屬性名 = 值 的方式, 爲這個對象添加成員, 只要賦值成功, 對象就增長了新的屬性this

    • 想要添加方法, 就添加方法
    • 想要添加屬性, 就添加屬性
    • 想要移除屬性或方法, 使用 delete
  2. 對象屬性的訪問形式spa

    • 點語法: o.name
    • 關聯數組: o[name]
  3. 混入方法( extend )code

  1. function extend(o1, o2){
  2. for(var key in o2){
  3. o1[key]= o2[key];
  4. }
  5. }
  1. 若是須要給對象動態添加成員, 必須使用關聯數組語法
  1. var o ={
  2. name :'張三',
  3. sayHello :function(){
  4. console.log('Hello, 我叫'+this.name );
  5. }
  6. }
  7. console.log( o.name );// 訪問的是 o 的name 屬性
  8. console.log( o['name']);
  9. o.sayHello();
  10. o['sayHello'];// []中的是字符串

參數傳遞

  1. 做爲函數中的參數, 就是將參數的數據複製一份, 傳遞給函數的形參
  1. function foo(num){}
  2. var a =123;
  3. foo(a);
* 函數在調用的時候, 首先須要將參數中的數據複製一份, 數字 123 複製一份
* 跳轉到函數中, 完成形參賦值, num = 123;
* 進入函數體, 執行每一句函數
  1. 值類型做爲函數參數傳遞的特徵, 函數內與函數外是兩個不一樣的變量, 只是值相等
  2. 引用類型做爲函數參數傳遞的特徵, 函數內與函數外是兩個不一樣的變量, 可是是指向相同得自, 指向同一個對象
    • 函數內部容許修改函數外部的對象的數據

構造函數

構造函數的做用

  1. new 的做用, 初始化數據
  2. 在 js 給對象添加屬性時, 使用對象的動態特性結合this(這裏this指的是使用構造函數建立的實例對象), 來進行賦值, 添加成員

構造函數建立對象的過程

  1. 代碼: var 五類= new Person();
  2. 使用 new 建立一個對象, 它相似於o = {}, 是一個沒有任何成員的空對象
    • 使用 new 建立對象, 對象的類型就是建立他的構造函數名
    • 使用 {} 建立對象, 至關於使用new Object, 他的類型都是 Object
  3. 調用構造函數, 建立實例對象, 初始化成員
    • 構造函數在調用的一開始, 有一個賦值操做, this指向剛剛創造錯來的實例對象(引用地址)
    • 隱藏在構造函數中this表示剛剛建立出來的對象
  4. 在構造函數中使用this結合對象的動態特性, 爲實例對象添加成員



相關文章
相關標籤/搜索