什麼是JS面向對象
- 首先,什麼是對象,簡單的來了解,對象是指一個整體,對外提供一些操作,比如空調,電視機等等;面向對象的意思就是,使用對象的時候,你可以直接使用它所提供的功能而忽略其内部組成情況。好比如你不知道電視機是怎麼運作的,也不知道它是由什麼零件組成的,但你知道拿到遙控就可以操作電視機,這就是一種面向對象的思想。
-
js中面向對象的特點:
抽象、封裝、繼承、多态。
抽象:表示對問題領域進行分析、設計中得出的抽象的概念,抓住核心問題。
封裝:封裝是實作面向對象程式設計的第一步,封裝就是将資料或函數等集合在一個個的單元中(我們稱之為類)。被封裝的對象通常被稱為抽象資料類型。
繼承:繼承主要實作重用代碼,節省開發時間。包括對象方法和屬性的繼承。
多态:同一操作作用于不同的對象,可以有不同的解釋,産生不同的執行結果。在運作時,可以通過指向基類的指針,來調用實作派生類中的方法。
怎樣寫構造函數
1.什麼是構造函數
構造函數就是構造對象的函數。使自己的對象多次複制,當對象被執行個體化後,構造函數會立即執行它所包含的任何代碼。
2.工廠模式
該模式抽象了建立對象的具體過程,用函數來以特定接口建立對象的細節
例如:
<script>
function createPerson(name, qq)
{
//原料
var obj=new Object();
//加工
obj.name=name;
obj.qq=qq;
obj.showName=function ()
{
alert('我的名字叫:'+this.name);
};
obj.showQQ=function ()
{
alert('我的QQ号:'+this.qq);
};
//出廠
return obj;
}
var obj=createPerson('blue', '258248832');
obj.showName();
obj.showQQ();
var obj2=createPerson('張三', '45648979879');
obj2.showName();
obj2.showQQ();
</script>
工廠方式的問題:使用工廠模式能夠建立一個包含所有資訊的對象,可以無數次的調用的這個函數。雖然其解決了建立多個相似對象的問題,但卻沒有解決對象識别的問題(即如何得知一個對象的類型)
3.構造函數模式
function Person(name,sex,age) {//注意這裡 構造函數首字母大寫
this.name = name;
this.sex = sex;
this.age = age;
this.info = function () {
console.log(this.name, this.age, this.sex);
}
}
var p1 = new Person('帥哥','男','20');
p1.info();
var p2 = new Person('美女','女','18');
p2.info();
注意構造函數與工廠模式有些不同的地方,如下:
構造函數首字母大寫,沒有顯式地建立對象,将屬性和方法指派給了 this 對象,沒有return語句
而且以這種方式來調用構造函數會大緻經曆以下幾個步驟:
1)建立一個新的對象
2)将構造函數的作用域指派給這個對象(是以this就指向了這個對象)
3)執行構造函數中的代碼(即給新對象添加屬性和方法的過程)
4)傳回對象