JavaScript面向?qū)ο蟪绦蛟O(shè)計(jì)教程
JavaScript中對(duì)象的定義為:無(wú)序?qū)傩缘募希鋵傩钥梢园局怠?duì)象或者函數(shù)。可以把對(duì)象想象成散列表,就是一組名值對(duì)(key:value),其中值可以是數(shù)據(jù)或函數(shù),每個(gè)對(duì)象都是基于一個(gè)引用類(lèi)型創(chuàng)建的。
理解對(duì)象
前面的博客里寫(xiě)過(guò)創(chuàng)建對(duì)象的方式有兩種,一種是創(chuàng)建一個(gè)object的實(shí)例,另一種是使用對(duì)象字面量法:
var person = new Object(); person.sex = man; person.name = bluce person.age = 58; person.sayHi() = function(){ console.log('Hello World!'); }
但更多的是采用下面一種方式
var person = { sex:man, name:'bluce', age:'58', sayHi:function(){ console.log('Hello World!'); } }
創(chuàng)建對(duì)象
使用Object構(gòu)造函數(shù)和對(duì)象字面量法都可以創(chuàng)建單個(gè)對(duì)象,但有明顯的缺點(diǎn):使用同一個(gè)接口創(chuàng)建很多對(duì)象,會(huì)產(chǎn)生大量的重復(fù)代碼。常用的創(chuàng)建對(duì)象方式主要有工廠模式、構(gòu)造函數(shù)模型、原型模式。
這里有自己的一個(gè)疑問(wèn):采用AMD規(guī)范后,編寫(xiě)的單個(gè)js文件,可以看做一個(gè)模塊,也可以說(shuō)是一個(gè)“類(lèi)”,現(xiàn)在與JavaScript中的這個(gè)“類(lèi)”概念有點(diǎn)混淆了,希望后面能分清應(yīng)用場(chǎng)合吧。
關(guān)于JavaScript面向?qū)ο蟪绦蛟O(shè)計(jì)教程小編就給大家介紹到這里,希望對(duì)大家有所幫助!
下面給大家補(bǔ)充JavaScript面向?qū)ο笤O(shè)計(jì)——工廠模式
工廠模式是軟件工程領(lǐng)域一種廣為人知的設(shè)計(jì)模式,這種模式抽象了創(chuàng)建具體對(duì)象的過(guò)程,可以用函數(shù)來(lái)封裝以特定接口創(chuàng)建對(duì)象的細(xì)節(jié)。
之前在Java的DAO中用過(guò)這種設(shè)計(jì)模式,比較容易理解。
function createPerson(name,age,sex){ var obj = new Object(); obj.name = name; obj.age = age; obj.sex = sex; obj.sayHi() = function(){ console.log(this.name); }; //引號(hào)不要漏掉,養(yǎng)成好的習(xí)慣 return obj; } var person1 = createPerson("bluce",58,"man"); var person2 = createPerson("john",68,"man");
使用該函數(shù)可以根據(jù)接收的參數(shù)創(chuàng)建一個(gè)包含必要信息的Person對(duì)象??梢詿o(wú)數(shù)次地調(diào)用這個(gè)函數(shù),每次都會(huì)返回一個(gè)包含三個(gè)屬性和一個(gè)方法的對(duì)象。工廠模式解決了創(chuàng)建多個(gè)相似對(duì)象的問(wèn)題,但沒(méi)有解決對(duì)象識(shí)別的問(wèn)題(如何知道一個(gè)對(duì)象的類(lèi)型)
- Javascript面向?qū)ο笤O(shè)計(jì)一 工廠模式
- JavaScript面向?qū)ο蟪绦蛟O(shè)計(jì)三 原型模式(上)
- JavaScript面向?qū)ο笾R(shí)串結(jié)(讀JavaScript高級(jí)程序設(shè)計(jì)(第三版))
- JS Pro-深入面向?qū)ο蟮某绦蛟O(shè)計(jì)之繼承的詳解
- JS面向?qū)ο蠡A(chǔ)講解(工廠模式、構(gòu)造函數(shù)模式、原型模式、混合模式、動(dòng)態(tài)原型模式)
- 淺談javascript面向?qū)ο蟪绦蛟O(shè)計(jì)
- javascript面向?qū)ο蟪绦蛟O(shè)計(jì)(一)
- js面向?qū)ο笾R?jiàn)創(chuàng)建對(duì)象的幾種方式(工廠模式、構(gòu)造函數(shù)模式、原型模式)
相關(guān)文章
JavaScript避免代碼的重復(fù)執(zhí)行經(jīng)驗(yàn)技巧分享
經(jīng)常會(huì)發(fā)現(xiàn)一個(gè)問(wèn)題,那就是重復(fù)的代碼執(zhí)行,下面就是一些在查看它們的源代碼時(shí)發(fā)現(xiàn)一些問(wèn)題,把這些分享給大家,希望能讓你們更加簡(jiǎn)潔高效的寫(xiě)出JavaScript代碼2014-04-04js+html5實(shí)現(xiàn)canvas繪制橢圓形圖案的方法
這篇文章主要介紹了js+html5實(shí)現(xiàn)canvas繪制橢圓形圖案的方法,涉及html5圖形繪制的基礎(chǔ)技巧,感興趣的朋友可以參考一下2016-05-05JavaScript中的AOP編程的基本實(shí)現(xiàn)
面向切面編程給我們提供了一個(gè)方法,讓我們可以在不修改目標(biāo)邏輯的情況下,將代碼注入到現(xiàn)有的函數(shù)或?qū)ο笾?。今天通過(guò)本文給大家分享JavaScript中的AOP編程的基本實(shí)現(xiàn)方法,需要的朋友參考下吧2021-07-07JavaScript 大數(shù)據(jù)相加的問(wèn)題
寫(xiě)一個(gè)函數(shù)處理大數(shù)據(jù)的相加問(wèn)題,所謂的大數(shù)據(jù)是指超出了整型,長(zhǎng)整型之類(lèi)的常規(guī)數(shù)據(jù)類(lèi)型表示范圍的數(shù)據(jù)。實(shí)現(xiàn)語(yǔ)言不限。2011-08-08火狐下table中創(chuàng)建form導(dǎo)致兩個(gè)table之間出現(xiàn)空白
js加入form導(dǎo)致兩個(gè)table之間出現(xiàn)空白,還有另一種說(shuō)法在table中創(chuàng)建form表單是不符合DOM標(biāo)準(zhǔn)的,會(huì)導(dǎo)致post失效,以及js數(shù)據(jù)傳輸失效2013-09-09微信小程序如何加載數(shù)據(jù)庫(kù)真實(shí)數(shù)據(jù)的實(shí)現(xiàn)
這篇文章主要介紹了微信小程序如何加載數(shù)據(jù)庫(kù)真實(shí)數(shù)據(jù)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03