国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

javascript工廠模式和構(gòu)造函數(shù)模式創(chuàng)建對象方法解析

2019-11-19 18:11:40
字體:
供稿:網(wǎng)友

工廠模式是軟件工程領(lǐng)域一種廣為人知的設(shè)計(jì)模式,這種模式抽象了創(chuàng)建具體對象的過程(本書后面還將討論其他設(shè)計(jì)模式及其在JavaScript 中的實(shí)現(xiàn))。考慮到在ECMAScript 中無法創(chuàng)建類,開發(fā)人員就發(fā)明了一種函數(shù),用函數(shù)來封裝以特定接口創(chuàng)建對象的細(xì)節(jié),如下面的例子所示。

function createPerson(name, age, job){ var o = new Object(); o.name = name; o.age = age; o.job = job; o.sayName = function(){ alert(this.name); }; return o;}var person1 = createPerson("Nicholas", 29, "Software Engineer");var person2 = createPerson("Greg", 27, "Doctor");

函數(shù)createPerson()能夠根據(jù)接受的參數(shù)來構(gòu)建一個(gè)包含所有必要信息的Person 對象。可以無數(shù)次地調(diào)用這個(gè)函數(shù),而每次它都會返回一個(gè)包含三個(gè)屬性一個(gè)方法的對象。工廠模式雖然解決了創(chuàng)建多個(gè)相似對象的問題,但卻沒有解決對象識別的問題(即怎樣知道一個(gè)對象的類型)。隨著JavaScript的發(fā)展,又一個(gè)新模式出現(xiàn)了。

二、構(gòu)造函數(shù)模式

像Object 和Array 這樣的原生構(gòu)造函數(shù),在運(yùn)行時(shí)會自動出現(xiàn)在執(zhí)行環(huán)境中。此外,也可以創(chuàng)建自定義的構(gòu)造函數(shù),從而定義自定義對象類型的屬性和方法。例如,可以使用構(gòu)造函數(shù)模式將前面的例子重寫如下。

function Person(name, age, job){ this.name = name; this.age = age; this.job = job; this.sayName = function(){ alert(this.name); };}var person1 = new Person("Nicholas", 29, "Software Engineer");var person2 = new Person("Greg", 27, "Doctor");

在這個(gè)例子中,Person()函數(shù)取代了createPerson()函數(shù)。我們注意到,Person()中的代碼除了與createPerson()中相同的部分外,還存在以下不同之處:

  • 沒有顯式地創(chuàng)建對象;
  • 直接將屬性和方法賦給了this 對象;
  • 沒有return 語句。

以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時(shí)也希望多多支持武林網(wǎng)!

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 沛县| 田林县| 郯城县| 微博| 乌拉特中旗| 汽车| 禹州市| 辽中县| 靖西县| 台东县| 晋宁县| 河南省| 中西区| 安图县| 泰和县| 二连浩特市| 岑溪市| 高州市| 长沙市| 冀州市| 开江县| 崇左市| 江西省| 科技| 静安区| 拉孜县| 绥化市| 昭通市| 赫章县| 巴楚县| 裕民县| 务川| 耒阳市| 浮梁县| 临安市| 永嘉县| 桃江县| 和静县| 同心县| 鄱阳县| 鄱阳县|