假如現在需要我們來編寫乙個遊戲,遊戲裡面的用兵單位是機械人,這時我們需要建立乙個機械人物件.這裡我們可以這樣來建立我們的機械人物件
一:建立物件
1、物件字面量法
var robot=
2、通過new建立物件
var robot = new object()
這裡來看明顯後面的方式看起來比較簡潔,所以我們這裡主要使用後者來建立我們的物件
我們需要給我們的robot
賦予一些方法,例如他的代號code
,他的生產序號number
,他的攻擊方式attackmode
等屬性,這時我們就可以這麼來寫:
/*第一種寫法
*/var robot={};
robot.code = "r007";
robot.number = "666";
robot.attachmode = function
()
/*第二種寫法
*/var robot =
}
這時我們訪問我們的機械人物件屬性時就可以通過以下兩種方式來訪問.
但這時的我們肯定不會只滿足製造乙個機械人呀,這種機械人我們需要量產時,但是我們又不可能使用我們上面這種方法來製造多個機械人,這樣寫出來的**量會有很多重複無用的**,這時我們的工廠模式就應運而生.
工廠模式形象店來說就是我們自己建立乙個模具,然後用這個模具來量產.
var createrobots = function(code,number)
//返回乙個物件
return
robot
}var robota = createrobots("r007","666");
var robotb = createrobots("r008","777");
這個時候看著很美好,但是漸漸地有些人發現了一些不同尋常的地方,那就是用工廠模式造出來的物件,我們沒有辦法去識別物件的型別,因為它們直接由object()
建構函式建立,原型鏈上只有object.prototype
物件.所以這裡我們的建構函式也應運而生
var robot = function(code,number)
}var robota = new robot("r007","666");
var robotb = new robot("r008","777");
使用建構函式雖然解決了我們型別判斷的問題,但是,他還是乙個物件的複製過程,跟上面的工廠模式還是有一定的相似之處,所以他也存在這工廠模式的另乙個問題,就是我們的attackmode
這個方法隨著這個物件被宣告1000個,這個方法也會因為屬於不同的例項而在記憶體中重複宣告1000次.在這裡,就需要用到原型相關知識了
var robot = function(code,number)
robot.prototype.attachmode = function
()
var robota = new robot("r007","666");
var robotb = new robot("r008","777");
但這裡又出現了乙個小問題,如果我們所有的原型上面的方法都像這樣來寫,那就成下面這個樣子了?
var robot = function(code,number)
robot.prototype.attachmode
= function
() robot.prototype.defendmode
= function
()
var robota = new robot("r007","666");
var robotb = new robot("r008","777");
這樣的**是不是看著不夠優雅?所以這個時候我們可以採用下面這種寫法來替代上面的.
robot.prototype=function(), defendmode:
function
() }
js物件導向
物件導向是相對於面向過程而提出的程式設計思想 核心在於通過這種方法的設計出來的程式不再是機械的按照設定的步驟去執行,而是按照需要的步驟去執行。舉個例子 乙個人要吃飯,如果用的面向過程的話就必須執行吃飯前的一切行為,而物件導向則可以跳過之前的環節!建構函式 所謂的工廠方式 用來構造抽象物件,通過呼叫建...
js物件導向
js物件導向 一 什麼是物件 物件可以看成乙個屬性的集合。對像一般有屬性和方法構成,方法的實質是函式,而屬性的實質是變數。二 什麼是物件導向 物件導向可以理解為不需要去了解對像的內部結構,就可以使用它。像我們的date 對像的方法可以獲取和設定時間,但我們並不了解其內部原理。三 物件導向 抽風機 抽...
JS物件導向
一 js物件導向 js是一門指令碼語言,不是物件導向的語言,它沒有類的概念,有物件的概念。物件導向程式設計 oop 和面向過程程式設計 opp 的區別 面向過程以 事件為中心,將完成整個事件拆分成若干個步驟,按照步驟依次執行。物件導向以 事物為中心,完成某個需求需要哪些事物參與,側重點在於每個事物的...