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

首頁 > 語言 > JavaScript > 正文

JavaScript中創建對象的7種模式詳解

2024-05-06 15:10:59
字體:
來源:轉載
供稿:網友

ECMA-262把對象定義為:”無需屬性的集合,其屬性可以包含基本值、對象或者函數。”嚴格來講,這就相當于說明對象是一組沒有特定順序的值。對象的每個屬性或方法都有一個名字,而每個名字都映射到一個值。正因為這樣,我們可以把ECMAScript的對象想象成散列表:無非就是一組名對值,其中值可以是數據或函數。

創建自定義對象最簡單的方式就是創建一個Object的實例,然后再為他添加屬性和方法,如下所示:

var person = new Object();、person.name = "liubei";person.age = 29;person.job = "shayemuyou";person.sayName = function(){  alert(this.name);}

上面的例子創建了一個名為person的對象,并為他添加了三個屬性和一個方法。其中sayName()方法用于顯示name屬性,this.name將被解析為person.name,早期的開發人員經常使用這個模式來創建對象,后來對象字面量的方法成了創建對象的首選模式,上面的例子用對象字面量的語法可以寫成如下這樣:

var person = {  name:"liubei",  age:29,  job:"shayemuyou",  sayName:function(){   alert(this.name);  }}

這個例子中的person對象和前面的對象是一樣的,都有相同的屬性和方法。

雖然Object構造函數或者對象字面量的方法都可以用來創建單個對象,但是這些方法有個明顯的缺點:使用同一個接口創建很多對象,會產生大量的重復代碼。為了解決這個方法,人們開始使用工廠模式的一種變體。

一、工廠模式

工廠模式是軟件工程領域一種廣為人知的設計模式,這種模式抽象了創建具體對象的過程。考慮到ECMAScript中無法創建類,開發人員就發明了一種函數,用函數來封裝以特定接口創建對象的細節,如下所示:

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("wei",25,"software");var person2 = createPerson("bu",25,"software");

函數createPerson()能夠根據接受的參數來構建一個包含所有必要信息的Person對象。可以多次調用這個函數,每次都會返回一個包含三個屬性一個方法的對象。工廠模式雖然解決了創建多個相似對象的問題,但卻沒有解決對象識別的問題,即怎么樣知道這是哪個對象類型。

二、構造函數模式

像Array、Object這樣的原生構造函數,在運行時會自動出現在執行環境中。此外,我們可以創建自定義個構造函數,從而定義自定義類型的屬性和方法。例如,我們可以使用構造函數重寫上個例子:

function Person(name, age, job){  this.name = name; this.age = age; this.job = job; this.sayName = function(){     alert(this.name);   }}var person1 = new Person("wei",25,"software");var person2 = new Person("bu",25,"software");            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 广河县| 房产| 新营市| 本溪| 晴隆县| 竹山县| 西青区| 西华县| 东丰县| 禹城市| 余江县| 莲花县| 绥棱县| 定西市| 高密市| 乌拉特后旗| 合肥市| 页游| 登封市| 抚宁县| 惠东县| 吴桥县| 枝江市| 和龙市| 中宁县| 通榆县| 射阳县| 慈溪市| 元朗区| 永靖县| 孟津县| 蒲城县| 蒙山县| 漯河市| 灌南县| 昭觉县| 横山县| 横山县| 治县。| 崇义县| 库伦旗|