JavaScript學習2:物件導向
很多人都知道,程式導向和麵向物件的軟體開發思想,同樣我們的JavaScript也具有這兩種開發模式。今天我們來看看JavaScript中的物件導向的東西。
物件導向的語言有一個非常重要的特性,那就是類的概念,通過類我們可以建立任意多個具有相同屬性和方法的物件,而JavaScript卻沒有類的概念,但是它有物件,只是此物件非彼物件。
建立物件
<span style="font-size:18px;">//建立物件
var person =new Object();
person.name='lian';
person.age=18;
person.run=function(){
return this.name+this.age +'奮鬥中……';
};</span>
這樣我們就建立了一個物件,並且為物件建立了屬性和方法,在run()方法裡的this,就代表person物件本身。這種方法是JavaScript建立物件的最基本的方法,但是我們要向建立一個類似的物件,比如name叫做Lee的,怎麼辦?那隻能重新再寫一遍相同的程式碼嘍,你說可以直接將person賦值給person1啊,這樣不省事多了麼,可是這樣做會覆蓋掉person物件的屬性值的,那你說咋辦?
為了解決這個問題,我們可以使用工廠模式,接觸過設計模式的小夥伴們應該都知道這是什麼玩意。這裡不再多說了,直接上程式碼,看如何實現:
<span style="font-size:18px;">//工廠模式
function CreateObject(name,age){
var obj =new Object();
obj.name=name;
obj.age=age;
obj.run=function(){
return this.name+this.age+'奮鬥中……';
};
return obj;
};
//建立物件例項
var person1 =CreateObject('Lian',18);
var person2 =CreateObject('Jack',22);
alert(typeof person1); //返回Object
alert(person2 instanceof Object); //返回true</span>
怎麼樣,是不是解決了重複例項化的問題,但是隨之而來的另一個問題是識別問題,什麼意思,就是我們根本無法搞清楚他們到底是哪個物件的例項,因為記憶體中會有兩個Object型別的例項物件,你根本不知道哪個是哪個。
那怎麼辦呢?我們在物件導向的學習中接觸過類,那麼就一定知道建構函式,也叫做構造方法,這種函式是用來初始化類的。我們可以採用建構函式來建立特定的物件,類似於Object物件。舉個例子:
<span style="font-size:18px;">//建構函式方式
function Person(name,age){
this.name=name;
this.age=age;
this.run=function(){
return this.name+this.age+'吃飯中……';
};
}
var person1=new Person('Lian',100);
var person2=new Person('Yang',100);
alert(person1 instanceof Person); //返回true,很清楚的告訴我們person1從屬於Person</span>
小結:使用建構函式的方法,既解決了重複例項化的問題,又解決了物件識別的問題,他與工廠模式的區別在於:
1沒有顯式的建立物件(newObject());
2直接將屬性和方法賦值給this物件;
3沒有return語句
建構函式和普通函式的唯一區別就是他們呼叫的方式不同。只不過,建構函式也是函式,必須要用new運算子來呼叫,否則就是普通函式。
相關文章
- javascript 物件導向學習(三)——this,bind、apply 和 callJavaScript物件APP
- JavaScript 物件導向JavaScript物件
- 學習Rust 物件導向Rust物件
- javascript ES5 物件導向的學習總結JavaScript物件
- PHP學習4——物件導向PHP物件
- Lua學習(二)物件導向物件
- 更多物件導向的JavaScript物件JavaScript
- JavaScript7:物件導向JavaScript物件
- 【讀】JavaScript之物件導向JavaScript物件
- JavaScript 的物件導向(OO)JavaScript物件
- JavaScript 物件導向初步理解JavaScript物件
- 【python 物件導向】 python物件學習筆記《1》Python物件筆記
- 《JavaScript物件導向精要》之六:物件模式JavaScript物件模式
- 《JavaScript物件導向精要》之三:理解物件JavaScript物件
- JavaScript物件導向—物件的建立和操作JavaScript物件
- java學習——物件導向之繼承Java物件繼承
- 1.16 JavaScript7:物件導向JavaScript物件
- 《JavaScript物件導向精要》系列文章JavaScript物件
- JavaScript物件導向詳解(原理)JavaScript物件
- JavaScript 物件導向實戰思想JavaScript物件
- Javascript物件導向與繼承JavaScript物件繼承
- 從零開始的Python學習Episode 19——物件導向(2)Python物件
- Python3:物件導向程式設計學習筆記(2)Python物件程式設計筆記
- 10.物件導向(2)物件
- 好程式設計師web前端學習路線之Javascript物件導向程式設計師Web前端JavaScript物件
- JavaScript高階:JavaScript物件導向,JavaScript內建物件,JavaScript BOM,JavaScript封裝JavaScript物件封裝
- 物件導向-物件導向思想物件
- Python 3 學習筆記之——物件導向Python筆記物件
- Python學習之物件導向程式設計Python物件程式設計
- Flutter學習筆記(8)--Dart物件導向Flutter筆記Dart物件
- Python學習筆記|Python之物件導向Python筆記物件
- js高階 物件導向 學習筆記JS物件筆記
- JavaScript物件導向之一(封裝)JavaScript物件封裝
- javascript:物件導向的程式設計JavaScript物件程式設計
- Javascript 物件導向程式設計(一)JavaScript物件程式設計
- Javascript 物件導向程式設計(二)JavaScript物件程式設計
- Javascript 物件導向程式設計(三)JavaScript物件程式設計
- JavaScript物件導向名詞詳解JavaScript物件
- JavaScript物件導向程式設計理解!JavaScript物件程式設計