JavaScript面向?qū)ο蟪绦蛟O(shè)計(jì)創(chuàng)建對(duì)象的方法分析
本文實(shí)例講述了JavaScript面向?qū)ο蟪绦蛟O(shè)計(jì)創(chuàng)建對(duì)象的方法。分享給大家供大家參考,具體如下:
面向?qū)ο蟮恼Z(yǔ)言具有一個(gè)共同的標(biāo)志,那就是具有“類(lèi)”的概念,但是在javascript中沒(méi)有類(lèi)的概念,在js中將對(duì)象定義為“無(wú)序?qū)傩缘募?,其屬性可以包含基本值,?duì)象或者函數(shù)”,即其將對(duì)象看作是一組名值對(duì)的散列表。這樣問(wèn)題就來(lái)了,如何創(chuàng)建對(duì)象呢?
在最開(kāi)始時(shí)使用object構(gòu)造函數(shù)和對(duì)象字面量來(lái)創(chuàng)建單個(gè)對(duì)象,下面簡(jiǎn)要介紹這兩種方法。
object構(gòu)造函數(shù):創(chuàng)建自定義對(duì)象的最簡(jiǎn)單方式就是創(chuàng)建一個(gè)object的實(shí)例,然后為這個(gè)實(shí)例添加屬性和方法:
var person=new object();
person.name="haha";
person.age=20;
person.job="搞笑工作者";
person.sayName=function(){
alert(this.name);
};
在上面的代碼中,定義了一個(gè)person對(duì)象,并且添加了三個(gè)屬性和一個(gè)方法,其中方法采用的時(shí)函數(shù)表達(dá)式的方式實(shí)現(xiàn),這是用object構(gòu)造函數(shù)的方式創(chuàng)建一個(gè)對(duì)象。
對(duì)象字面量:
var person={
name:"haha",
age:20,
job:"搞笑工作者",
sayName:function(){
alert(this.name);
}
}
以上代碼中同樣創(chuàng)建了一個(gè)person對(duì)象,這種方法類(lèi)似于代碼塊的方式,實(shí)現(xiàn)了對(duì)一個(gè)person對(duì)象的創(chuàng)建。
以上這兩種方法中,都需要大量重復(fù)定義,在我們需要?jiǎng)?chuàng)建對(duì)象時(shí)就需要重復(fù)以上代碼,不夠精煉,所以出現(xiàn)了工廠模式和構(gòu)造函數(shù)模式類(lèi)創(chuàng)建對(duì)象的方法。
工廠模式:
工程模式抽象了創(chuàng)建具體對(duì)象的過(guò)程(專(zhuān)業(yè)書(shū)籍中給出),其實(shí)說(shuō)的比較明白點(diǎn)就是采用函數(shù)的形式,用函數(shù)來(lái)封裝創(chuàng)建對(duì)象的過(guò)程,再創(chuàng)建對(duì)象時(shí)以調(diào)用函數(shù)的形式創(chuàng)建。例如:
function createPerson(name,age,job){
var o=new object();
o.name="haha";
o.age=20;
o.job="搞笑工作者";
o.sayName=function(){
alert(this.name);
};
return o;
}
var person1=createPerson("hehe",22,"呵呵工作者");
var person2=createPerson("heihei",23,"嘿嘿工作者");
在這種工廠模式下,將以object構(gòu)造函數(shù)創(chuàng)建對(duì)象的方法封裝到了一個(gè)函數(shù)中,在以后的創(chuàng)建對(duì)象的過(guò)程中,直接調(diào)用此方法就可以創(chuàng)建出一個(gè)接著一個(gè)的對(duì)象。
構(gòu)造函數(shù)模式:
構(gòu)造函數(shù)模式相對(duì)于工廠模式的優(yōu)勢(shì)在于構(gòu)造函數(shù)模式可以創(chuàng)建特定類(lèi)型的對(duì)象。
function Person(name,age,job){
this.name=name;
this.age=age;
this.job=job;
this.sayName=function(){
alert(this.name);
};
}
var person1=new Person("hehe",22,"呵呵工作者");
var person2=new Person("heihei",23,"嘿嘿工作者");
在以上代碼中,定義一個(gè)Person()的方法,在Person()方法中,將其屬性進(jìn)行了實(shí)例化,這種方法類(lèi)似于在面向?qū)ο笳Z(yǔ)言中在實(shí)例化類(lèi)時(shí)直接會(huì)調(diào)用的構(gòu)造函數(shù),利用這種方法,將此函數(shù)大致相當(dāng)于面向?qū)ο笳Z(yǔ)言中的類(lèi),可以在以后的代碼中不斷的實(shí)例化,用以不斷創(chuàng)建出此類(lèi)的對(duì)象。在Javascript中,這種構(gòu)造函數(shù)也是一種函數(shù),不過(guò)是專(zhuān)門(mén)用于創(chuàng)建對(duì)象而已。
更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《javascript面向?qū)ο笕腴T(mén)教程》、《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)》
希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。
- js面向?qū)ο笾R?jiàn)創(chuàng)建對(duì)象的幾種方式(工廠模式、構(gòu)造函數(shù)模式、原型模式)
- 從面試題學(xué)習(xí)Javascript 面向?qū)ο螅▌?chuàng)建對(duì)象)
- js面向?qū)ο?多種創(chuàng)建對(duì)象方法小結(jié)
- 學(xué)習(xí)javascript面向?qū)ο?掌握創(chuàng)建對(duì)象的9種方式
- 詳解JavaScript基于面向?qū)ο笾畡?chuàng)建對(duì)象(1)
- 詳解JavaScript基于面向?qū)ο笾畡?chuàng)建對(duì)象(2)
- JavaScript 三種創(chuàng)建對(duì)象的方法
- JS 創(chuàng)建對(duì)象(常見(jiàn)的幾種方法)
- js創(chuàng)建對(duì)象的幾種常用方式小結(jié)(推薦)
- javascript面向?qū)ο髣?chuàng)建對(duì)象的方式小結(jié)
相關(guān)文章
js計(jì)算系統(tǒng)當(dāng)前日期是星期幾的方法
這篇文章主要為大家詳細(xì)介紹了js計(jì)算系統(tǒng)當(dāng)前日期是星期幾4種方法,需要的朋友可以參考下2016-07-07
兼容IE,firefox的獲取節(jié)點(diǎn)的文本值的javascript代碼
javascript獲取節(jié)點(diǎn)的文本值,已經(jīng)考慮了兼容性。大家可以放心使用。注意了這里的兼容沒(méi)有使用innerText,如果要使用兼容innerText,請(qǐng)參考腳本之家以前發(fā)布的文章。2009-12-12
實(shí)例講解JavaScript 計(jì)時(shí)事件
這篇文章主要介紹了JavaScript 計(jì)時(shí)事件的相關(guān)資料,文中示例代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-07-07
利用純JavaScript實(shí)現(xiàn)讀取和導(dǎo)出Excel文件
在 Web 開(kāi)發(fā)中,導(dǎo)入和導(dǎo)出 Excel 文件是一個(gè)常見(jiàn)的需求,特別是對(duì)于數(shù)據(jù)報(bào)表和分析等場(chǎng)景,雖然有很多第三方庫(kù)(如 xlsx 和 sheetjs)提供了非常強(qiáng)大的功能,但本文將探討如何不依賴(lài)第三方庫(kù),利用純 JavaScript 來(lái)實(shí)現(xiàn)讀取和導(dǎo)出Excel文件,需要的朋友可以參考下2025-03-03
React?diff算法面試考點(diǎn)超詳細(xì)講解
渲染真實(shí)DOM的開(kāi)銷(xiāo)很大,有時(shí)候我們修改了某個(gè)數(shù)據(jù),直接渲染到真實(shí)dom上會(huì)引起整個(gè)dom樹(shù)的重繪和重排。我們希望只更新我們修改的那一小塊dom,而不是整個(gè)dom,diff算法就幫我們實(shí)現(xiàn)了這點(diǎn)。diff算法的本質(zhì)就是:找出兩個(gè)對(duì)象之間的差異,目的是盡可能做到節(jié)點(diǎn)復(fù)用2022-12-12
js實(shí)現(xiàn)計(jì)時(shí)器秒表功能
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)計(jì)時(shí)器秒表功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-12-12

