淺談JS中的面向?qū)ο?/h1>

淺談JS中的面向?qū)ο?/h3>

本文主要說說本人在JS中對面向?qū)ο蟮睦斫狻?/p>

計(jì)算機(jī)編程語言主要分為面向過程式編程和面向?qū)ο笫骄幊唐窠颍嫦驅(qū)ο缶幊套畲蟮奶攸c(diǎn)就是類盖袭,比如人有姓名怠晴,性別蛋褥,年齡临燃,行為等,電腦有型號烙心,重量等膜廊,類就是將一類事物的共通點(diǎn)放到一個集合中。

JS中本身沒有class(ES6以前淫茵,ES6引入了class爪瓜,本文主要針對ES6以前進(jìn)行講解),但是有類class的概念匙瘪,就是我們常說的構(gòu)造函數(shù)铆铆,本質(zhì)上是構(gòu)造函數(shù)中的prototype起到類似class的作用。

1丹喻、首先我們來看看怎么構(gòu)建一個對象薄货。

var person = new Object();

//給person屬性

person.name = "Lily";

person.age = 17;

//給person創(chuàng)建一個走路的方法

person.walk = function () {

? alert(this.name + "正在走路");

};

//調(diào)用person對象

person.walk(); //Lily正在走路

但是這種創(chuàng)建方式有一個很大的缺點(diǎn),就是如果有多個類似的對象碍论,會產(chǎn)生大量重復(fù)性代碼菲驴,怎么解決呢?后來有人創(chuàng)造了工廠模式骑冗。


2赊瞬、工廠模式

function person (name, age) {

? var obj = new Object();

? obj.name = name;

? obj.age = age;

? obj.walk = function () {

? ? alert(this.name + "正在走路");

? };

? obj.eat = function () {

? ? alert(this.name + "正在吃飯");

? };

? return obj;

}

// 調(diào)用

person('Lily', 17).walk(); //Lily正在走路

person('Bob', 15).eat(); //Bob正在吃飯


工廠模式有效的解決了代碼冗余的問題,但是又產(chǎn)生了一個新的問題贼涩,就拿該實(shí)例來說巧涧,Bob吃飯時間在8點(diǎn),但是Lily這個點(diǎn)正在走路遥倦,那么注定了有一個方法是多余的谤绳,這還是一個簡單的實(shí)例,如果是一個復(fù)雜的對象袒哥,有十幾個方法缩筛,但是實(shí)際用到的只有其中的一個方法,這就浪費(fèi)內(nèi)存資源了堡称,因?yàn)槊總€對象在實(shí)例化的時候都會創(chuàng)建工廠中的屬性和方法瞎抛。解決方法我們第四點(diǎn)來講,我們先講講構(gòu)建函數(shù)的模式來構(gòu)建對象却紧。


3桐臊、構(gòu)建函數(shù)模式

function Person (name, age) {

? this.name = name;

? this.age = age;

? this.walk = function () {

? ? alert(this.name + "正在走路");

? };

? this.eat = function () {

? ? alert(this.name + "正在吃飯");

? };

}

//調(diào)用方式

var boy = new Person("Bob", 15);

var girl = new Person("Lily", 17);

boy.walk(); //Bob正在走路

girl.eat(); //Bob正在吃飯

這種模式與工廠模式相比胎撤,有幾個明顯的特點(diǎn)

1、不顯式的創(chuàng)建對象(即不new Object())断凶,而是通過this伤提,this在這里表示調(diào)用者。

2认烁、不用return返回

3肿男、使用new的方式調(diào)用。

缺點(diǎn):還是沒有解決工廠模式存在的內(nèi)存浪費(fèi)問題却嗡。

有人會說構(gòu)建函數(shù)模式和普通函數(shù)有什么區(qū)別呢舶沛?

構(gòu)建函數(shù)模式就是用函數(shù)的方式來體現(xiàn)對象,最大的區(qū)別就是調(diào)用方式稽穆,構(gòu)建函數(shù)的調(diào)用方式是用new來實(shí)例化(new Person())冠王,而普通函數(shù)就是直接調(diào)用函數(shù)名(person())赶撰。


4舌镶、原型模式

function Person (name, age) {

? Person.prototype.name = name;

? Person.prototype.age = age;

? Person.prototype.talk = function () {

? ? alert(this.name + "正在說話");

? }

}

Person.prototype.walk = function () {

? alert(this.name + "正在走路");

}

// 調(diào)用

var boy = new Person("Bob", 15);

boy.walk();//Bob正在走路


原型模式我比較喜歡稱之為(混合模式),該模式有效的解決了內(nèi)存浪費(fèi)問題豪娜,將通用的方法或?qū)傩苑诺絇erson中餐胀,將實(shí)例的特別屬性單獨(dú)定義。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者

  • 序言:七十年代末瘤载,一起剝皮案震驚了整個濱河市否灾,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌鸣奔,老刑警劉巖墨技,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異挎狸,居然都是意外死亡扣汪,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進(jìn)店門锨匆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來崭别,“玉大人,你說我怎么就攤上這事恐锣∶┲鳎” “怎么了?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵土榴,是天一觀的道長诀姚。 經(jīng)常有香客問我,道長玷禽,這世上最難降的妖魔是什么学搜? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任娃善,我火速辦了婚禮,結(jié)果婚禮上瑞佩,老公的妹妹穿的比我還像新娘聚磺。我一直安慰自己,他們只是感情好炬丸,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布瘫寝。 她就那樣靜靜地躺著,像睡著了一般稠炬。 火紅的嫁衣襯著肌膚如雪焕阿。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天首启,我揣著相機(jī)與錄音暮屡,去河邊找鬼。 笑死毅桃,一個胖子當(dāng)著我的面吹牛褒纲,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播钥飞,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼莺掠,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了读宙?” 一聲冷哼從身側(cè)響起彻秆,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎结闸,沒想到半個月后唇兑,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡桦锄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年扎附,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片察纯。...
    茶點(diǎn)故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡帕棉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出饼记,到底是詐尸還是另有隱情香伴,我是刑警寧澤,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布具则,位于F島的核電站即纲,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏博肋。R本人自食惡果不足惜低斋,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一蜂厅、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧膊畴,春花似錦掘猿、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽辐宾。三九已至,卻和暖如春改橘,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背玉控。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工飞主, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人高诺。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓碌识,卻偏偏與公主長得像,于是被迫代替她去往敵國和親懒叛。 傳聞我的和親對象是個殘疾皇子丸冕,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評論 2 354

推薦閱讀更多精彩內(nèi)容