回顧:
三、面向對象編程
1、什麼是對象
ECMAScript-262 把對象定義爲:無序屬性的集合,其屬性可以包含基本值、對象或者函數。
var obj = {
name:'張三',
age:20,
say:function(){},
sanwei:['100cm', '90cm', '105cm'],
abc:另外一個對象
};
我喜歡大眼睛、長頭髮、大長腿、會洗衣服、會做飯、會生孩子的女孩,比如有孫莉、冰冰….
上面一句話就描述了類和對象的關係,大眼睛、大長腿、長頭髮是類的屬性;會洗衣服、會做飯是類的方法;後面的符合條件的兩個女孩就是類的實例對象。
2、面向對象編程
面向對象編程就是基於對象的編程。面向對象編程簡稱OOP(Object-Oritened Programming)爲軟件開發人員敞開了一扇大門,它使得代碼的編寫更加簡潔、高效、可讀性和維護性增強。它實現了軟件工程的三大目標:(代碼)重用性、(功能)擴展性和(操作)靈活性,它的實現是依賴於面向對象的三大特性:封裝、繼承、多態。在實際開發中 使用面向對象編程 可以實現系統化、模塊化和結構化的設計 它是每位軟件開發員不可或缺的一項技能。
定義對象:
1、new 內置函數
之前學習過的String對象、Date對象、Array對象、RegExp對象。使用這些對象的時候,可以new這些函數。然後將得到的返回值當做對象來使用。比如使用字符串對象:
var s = new String('hello world'); // 通過new內置的函數,得到對象。
2、直接量語法
直接量語法定義的對象,值可以是任何的數據類型:
直接量語法定義的對象中,this表示當前的對象:
3、new 構造函數方式
ES5中沒有類的概念,只有構造函數或構造器。要想得到對象,只能new一個構造函數。
什麼是構造函數?什麼是普通函數?
定義函數的時候,正常按照函數的語法來定義即可。如果這個函數正常使用,那麼還是一個函數,如果一個函數被new了,那麼這個函數就可以叫做構造函數。
對象的相關操作
1、添加成員
先定義兩個對象,一個用直接量語法,另一個用構造函數方式。
得到對象之後,可以爲對象添加一些成員(屬性和方法):
2、刪除成員
使用delete關鍵字來刪除對象的成員(屬性、方法);
另外,delete也可以刪除沒有用var聲明的變量。
對象在內存中的存在形式:
對象在傳值上,是引用傳遞。在使用對象的時候,實際上都是使用的對象的地址。
代碼:根據構造函數得到兩個對象:
得到的兩個對象在內存中的形式:
在實際使用對象的時候,實際上都是使用的對象的地址。
小例子一:
小例子二:
小例子三: