今天說面向對象,嗯,不是那個對象,是這個對象。 接下來就開始今天的內容: 什麼是面向對象: 就是把數據及數據的操作方法放在一起,作為一個相互依存的整體 對象。對同類對象抽象出其共性,形成類。 類中的大多數據,只能用本類的方法進行處理。類通過一個簡單的外部介面與外界發生關係,對象與對象之間通過消息進行 ...
今天說面向對象,嗯,不是那個對象,是這個對象。
接下來就開始今天的內容:
什麼是面向對象:
就是把數據及數據的操作方法放在一起,作為一個相互依存的整體----對象。對同類對象抽象出其共性,形成類。
類中的大多數據,只能用本類的方法進行處理。類通過一個簡單的外部介面與外界發生關係,對象與對象之間通過消息進行通信。程式流程由用戶在使用中決定。
名詞解釋:
基於對象:一切皆對象,以對象的概念來編程。
面向對象編程:
對象:就是人們要研究的事物,不僅能表示具體事物,還能表示抽象的規則,計劃或事件。
屬性的無序集合,每個屬性可以存一個值(原始值,對象,函數)
對象的屬性和行為:
屬性:用數據值來描述他的狀態
行為:用來改變對象行為的方法
類:
具有相同或相似的性質的對象的抽象就是類。對象的抽象,就是類。累的具體化就叫做對象。
說了面向對象,就說一下面向過程:
自頂向下順序執行,逐步求精;其程式結構是按功能劃分為若幹個基本模塊,這些模塊形成一個樹狀結構;各模塊之間的關係儘可能簡單,在功能上相對獨立;
每一模塊內部均是由順序、選擇和迴圈三種基本結構組成;
其模塊化實現的具體方法就是使用程式。程式流程寫在程式是就已決定。
說了這麼多概念性的問題,還是有點模糊,下麵來寫相關對象的一屆方法:
1、創建對象
(1)直接量
不如創建一個狗狗的對象,代碼如下:
var dog = {
//添加name屬性 name : "Td",
//添加叫的方法 say : function (){ document.write("汪汪汪"); } }
(2)工廠模式
1 <script> 2 //用工廠模式,先要確定創建對象的屬性和方法 3 //列如:創建摩拜單車,先要確定其屬性和方法 4 //屬性:名字 價錢 二維碼 顏色 鎖 5 //方法 : 跑 6 function createObj(name,price,code){ 7 //創建對象 8 var obj = new Object(); 9 obj.name = name; 10 obj.price = price; 11 obj.code = code; 12 obj.color = "yellow"; 13 obj.run = function(){ 14 alert(this.name+"開始出發"); 15 } 16 //在對象里,要使用對象的屬性或方法,要用this.屬性或this.方法。 17 18 //返回對象 19 return obj; 20 } 21 //調用工廠函數 22 var a = createObj("摩拜單車1",1,101); 23 var b = createObj("摩拜單車2",1,102); 24 var c = createObj("摩拜單車3",1,103); 25 26 a.run(); 27 28 alert(a.name + "價錢" + a.price+"元"); 29 </script>
(3)構造函數
1 <script> 2 //構造函數 (又名 初始函數):用來創建對象的 3 4 //develop:開發 5 //【註意】1、構造函數名 第一個字母 一定要 大寫 6 // 2、構造函數沒有返回值 7 //this : 表示當前, 指向的是自己本身 8 9 function Game(name,personCount,develop){ 10 this.name = name; 11 this.personCount = personCount; 12 this.develop = develop; 13 this.play = function(){ 14 alert("我是"+this.name+"游戲"+"我的玩家數量是:"+this.personCount); 15 } 16 } 17 18 //構造函數不返回對象是因為 關鍵字new 19 //new 關鍵字創建對象並返回對象 20 var Lol = new Game("Lol","1000萬","拳頭"); 21 Lol.play(); 22 var Cf = new Game("cf","3億","三星"); 23 Cf.play(); 24 //instanceof 判斷一個對象他父親是誰 25 alert(Lol instanceof Game); 26 //Lol instanceof Game true 27 //Lol instanceof Object true 28 29 </script>
說一下構造函數和工廠模式的區別:
構造函數名首字母大寫,與工廠模式區別開;
構造函數內部使用this關鍵字;
構造函數沒有返回值,工廠模式需要返回值;
今天就這樣,明天續更。。。。