面向對象可以用於描述現實世界的事物,但是事物分為具體的(特指的)事物和抽象的(泛指的)事物。
面向對象思維的特點:
1.抽取(抽象)對象共有的屬性和行為組織(封裝)成一個類(模板)
2.對類進行實例化,獲取類和對象
3.對象--特指的
1) 對象是一個具體的事物,一個蘋果、一張網頁、一個數據庫、一個與遠程服務器的連接也是對象;
2) javascript中 對象是一組無序的相關屬性和方法的集合,所有的事物都是對象,例如,字符串、數值、數組、函數等。
屬性:事物的特征,在對象中用屬性來表示(常用名詞)如,人的name
方法:事物的行為,在對象中用方法來表示(常用動詞)
4.類--泛指的
可以用class關鍵字聲明一個類(字母大寫),之后以這個類來實例化對象。
5.類和對象的區別:
1) 類抽象了對象的公共部分,它泛指某一大類(class)
2) 對象特指某一個,通過類實例化一個具體的對象
3) 類必須使用new實例化對象
4) 創建類 創建對象
語法:
class Name { // body}
創建實例:
var xx = new Name();
6.語法規范:
1) 用class關鍵字聲明一個類,首字母大寫
2) 類里面的constructor函數,存放的是類的共有屬性;
可以接受傳遞過來的參數,同時返回實例對象(不需要return哦)
只要new生成實例時,就會自動調用這個函數,如果我們不寫這個函數,類會自動生成這個函數
3) 生成實例的new不能省略
4) 創建類時 類名后面不加小括號,生成實例 類后面加小括號
5) 構造函數不需要加function(類里面的所有函數不需要添加function)
6) 多個函數方法之間不需要用逗號分隔
具體的實例如下:
// 1.創建一個明星類
class Star{ // 類的共有屬性放到constructor中
constructor(name, age){ this.name = name; this.age = age; } sing(song){ alert(this.name+"唱"+song); } play(){ alert("play"); } } // 2.利用類創建對象
var aa = new Star('小明', 20); var bb = new Star('小紅', 20); console.log(aa.name); // 小明
console.log(bb.age); // 20
aa.sing("lala"); // 小明唱lala
bb.play(); // play