javascript創(chuàng)建對象的幾種方式

考慮到在ECMAScript中無法創(chuàng)建類(納尼),用函數(shù)來封裝以特定接口創(chuàng)建對象的細節(jié)。

1穿扳、工廠模式

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(“nanlan",21,"software enginner");

var person2=createPerson("xiaoju",22,"photograper");

函數(shù)createPerson()能夠根據(jù)接受的參數(shù)構(gòu)建一個包含所有必要信息的person對象【彀Γ可以無數(shù)次調(diào)用這個對象,每次都會返回三個屬性和一個方法的對象。工廠模式雖然解決了創(chuàng)建多個相似對象的問題冬阳,卻沒有解決對象識別的問題(即知道一個對象的類型)

2蛤虐、構(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("nanlan",22,"software ?enginner");

var person2=new Person("xiaoju",21,"photographer");

沒有顯式的創(chuàng)建對象,直接將屬性和方法賦給了對象摩泪,沒有return語句笆焰。構(gòu)造函數(shù)始終都是以一個大寫字母開頭,而非構(gòu)造函數(shù)應(yīng)該以一個小寫字母開頭见坑。

創(chuàng)建person的新實例嚷掠,必須使用new操作符。以這種方式調(diào)用構(gòu)造函數(shù)會經(jīng)歷以下4個步驟荞驴,1)創(chuàng)建一個新對象 2)將構(gòu)造函數(shù)的作用域給新對象(因此this就指向了這個新對象) 3)執(zhí)行構(gòu)造函數(shù)的代碼 4)返回新對象

所有的對象式Person的實例不皆,也是Object的實例,可以通過instaceof來檢測熊楼,你如

person1 instaceof Object 霹娄,person2 instaceof Person//均返回ture

3、原型模式

function Person(){

Person.prototype.name="nanlan";

Person.prototype.age=29;

Person.Prototype.job="softWare Engineer";

Person.Prototype.sayname=function(){

alert(this.name);

}

var person1=new Person();

person2.sayname();

var person2= new Person();

person2.sayname();

alert(person1.sayname==person2.name);

}



恩鲫骗,這是關(guān)于js原型的問題犬耻,感覺比閉包還要難懂。發(fā)現(xiàn)一個挺有意思的一個問題执泰,就是這道題枕磁,原型是采用字面變量去定義的,然后有兩個實例Person1和Person2實例术吝,其中對通過實例對原型當中的數(shù)組進行了修改计济,而Person1和Person2會共享原型的引用類型,比如說數(shù)組排苍,所以他們的結(jié)果是一樣的沦寂,但是Person1也也修改了原型當中name的值,這個時候結(jié)果不一樣淘衙,原因是因為name只是一個普通的字符類型


猜猜這道題的結(jié)果是多少
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末传藏,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子幔翰,更是在濱河造成了極大的恐慌漩氨,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件遗增,死亡現(xiàn)場離奇詭異,居然都是意外死亡款青,警方通過查閱死者的電腦和手機做修,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人饰及,你說我怎么就攤上這事蔗坯。” “怎么了燎含?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵宾濒,是天一觀的道長。 經(jīng)常有香客問我屏箍,道長绘梦,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任赴魁,我火速辦了婚禮卸奉,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘颖御。我一直安慰自己榄棵,他們只是感情好,可當我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布潘拱。 她就那樣靜靜地躺著疹鳄,像睡著了一般。 火紅的嫁衣襯著肌膚如雪芦岂。 梳的紋絲不亂的頭發(fā)上瘪弓,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天,我揣著相機與錄音盔腔,去河邊找鬼杠茬。 笑死,一個胖子當著我的面吹牛弛随,可吹牛的內(nèi)容都是我干的瓢喉。 我是一名探鬼主播,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼舀透,長吁一口氣:“原來是場噩夢啊……” “哼栓票!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起愕够,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤走贪,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后惑芭,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體坠狡,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年遂跟,在試婚紗的時候發(fā)現(xiàn)自己被綠了逃沿。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片婴渡。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖凯亮,靈堂內(nèi)的尸體忽然破棺而出边臼,到底是詐尸還是另有隱情,我是刑警寧澤假消,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布柠并,位于F島的核電站,受9級特大地震影響富拗,放射性物質(zhì)發(fā)生泄漏臼予。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一媒峡、第九天 我趴在偏房一處隱蔽的房頂上張望瘟栖。 院中可真熱鬧,春花似錦谅阿、人聲如沸半哟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽寓涨。三九已至,卻和暖如春氯檐,著一層夾襖步出監(jiān)牢的瞬間戒良,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工冠摄, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留糯崎,地道東北人。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓河泳,卻偏偏與公主長得像沃呢,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子拆挥,可洞房花燭夜當晚...
    茶點故事閱讀 42,901評論 2 345

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