JavaScript面向對象(一)基礎詳解及封裝

一、類和對象

1.1、類:類型的簡稱,數據類型的簡稱;是一個概念、代號,如人、電腦、飛機等等
1.2、對象:類的某個具體的實例,是一個實際存在的物體,如陳偉霆、dell電腦、波音747
1.3、類和對象,是面向對象編程的基礎。

二、面向對象?

2、1概念:面向對象不是技術,而是一種處理問題的思路,一種編程思想。
2.2特點:

1、對零散數據的封裝,避免了數據之間產生互相影響的情況。
2、提高代碼的複用性。
3、降低代碼之間的耦合性(依賴),提高代碼健壯性。
4、提高項目的擴展性(軟件開發ocp原則:開閉原則)。

2.3特徵:
封裝、繼承、多態
2.4過程:

1、面向對象分析    OOA
2、面向對象設計    OOD
3、面向對象編程    OOP
4、面向對象測試    OOT

三、面向對象–封裝

1、原始的封裝模式——如下,模擬人的類型

var People = {
  name:"Tom",
  age:3,
  eat:function(){
      console.log(name + “吃飯了”);
  }
}

據這個類型的模板,來創建具體的實例對象,進行封裝!

var People = {}
People .name = "Tom";
People .age = 3;
People .eat = function() {
    console.log(this.name + “吃飯了…”);
}

數據已經封裝完成,將name、age、eat()描述一個人的屬性特徵和行爲操作被封裝在一起,也就是將零散的數據封裝整合到一起方便程序中進行統一的管理和使用。

但是上面的封裝方式使用的時候一定要注意適用範圍

1.比較適用於程序中某個類型只存在唯一實例對象的形式。
2、不適合某個類型有多個對象的形式,多個實例書寫方式就會很麻煩
3、實例和類之間沒有關聯關係、實例和實例之間沒有關聯關係

2、函數封裝模式

function People(name, age) {
  return {
      name:name,
      age:age
  }
}

在這樣的情況下,創建對象就會變得非常簡單

var cat = People("Tom", 30);
var mouse = People("jerry", 35);

這樣的優化,一定程度上降低了代碼的複雜度,提高了代碼的可用性。不過只是對上一種方式的封裝,依然體現不出cat、mouse實例和People類型之間的關係
3、構造函數—–通過new關鍵字來創建對象
* 通過函數定義了一個類型,使用了 this.屬性 這樣的語法結構, 這個函數就被稱爲構造函數
* 構造函數:專門被用來創建對象的函數
定義類型的語法結構

function People (name, age){
  this.name = name;
  this.age = age;
  this.eat = function() {
      console.log(this.name + “吃飯了…”);
  }
}
var changsheng= new People("長生", 19);
var luoluo = new People("落落", 138);

通過new關鍵字創建的對象,就會有自己的一個constructor屬性,指向的是創建自己的構造函數,通過這樣的方式來反映類型和對象之間的關係。

console.log(changsheng.constructor); //People
console.log(luoluo.constructor);  //People

另一個對象操作符號instanceof驗證類型和對象之間的關係返回值爲布爾值

 console.log(changsheng instanceof People);//People類型 ? true
 console.log(luoluo instanceof People);//People類型 ?true
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章