javascript 對象,構(gòu)造函數(shù)(所謂的 實例锋拖,類)

Javascript中一切都是對象

在javascript中诈悍,一切都是對象,函數(shù)也是兽埃。除了null和undefined侥钳。

1

對象的構(gòu)建方法有兩種
var o = {name:'jalon'};

var o = new Object(); o.name = 'jalon';

推薦使用第一種。
而有的時候柄错,我們?nèi)绻枰芏囝愃频膶ο笙隙幔覀円惨?一樣一一創(chuàng)建嗎?

2

當(dāng)然不是鄙陡,我們可以使用構(gòu)造函數(shù)冕房,通過new的方法,生成多個對象趁矾。也就是在模擬其他語言的類與實例耙册。
簡單這樣理解:構(gòu)造函數(shù)=類,對象=實例毫捣。
其實在js中详拙,每一個對象(即使是第一種方法創(chuàng)建的)都有一個隱藏的屬性,他的值是構(gòu)造他的那個構(gòu)造函數(shù)蔓同。如果是第一種方式創(chuàng)建的對象饶辙,那么他的構(gòu)造函數(shù)就是Object()這個內(nèi)建函數(shù)對象。這個屬性就是constructor斑粱。它對應(yīng)的值就是那個都早該對象的構(gòu)造函數(shù)弃揽。
那么問題來了?(藍翔,愛過)前面說函數(shù)也是對象矿微,那么構(gòu)造函數(shù)也是對象痕慢,他是不是也有他的構(gòu)造函數(shù)呢,答對了涌矢,他也有掖举,他的構(gòu)造函數(shù)就是Function()這個對象(也是函數(shù)),也可以說這個構(gòu)造函數(shù)娜庇。
那...Function這個對象有沒有構(gòu)造函數(shù)呢...對塔次,有,不過就是他自身,也就是他的constructor就是Function他本身名秀。
Object對象的構(gòu)造函數(shù)也是Function()励负。

3

每一個構(gòu)造函數(shù)都有一個屬性叫做prototype,這個屬性的值是一個對象泰偿,這個對象是所有基于此構(gòu)造函數(shù)創(chuàng)建的對象的基引用(base refrence)熄守。所有的實例都會去找這個對象(模子)制作自己。
每一個對象都有對應(yīng)的基引用耗跛。(也會有對應(yīng)的構(gòu)造函數(shù))

因為基引用也是對象裕照,所以他一定也有基引用。他的基引用肯定也有基引用调塌。對晋南,
這就是原型鏈。

4#
那么羔砾,當(dāng)我們new出2個實例來的時候负间,
new的過程其實就是將構(gòu)造函數(shù)的作用域賦給新對象的過程,即將this指代綁定到新對象身上姜凄,即新對象有了構(gòu)造函數(shù)的屬性政溃,但是基引用還是空的 { }
不過當(dāng)我們:
o.constructor.prototype.age = 23;或O.prototype.age = 23
輸出的o新增了age屬性态秧。這是因為改變了基引用 {age : 23}董虱。
這個過程是這樣的,當(dāng)訪問一個對象的時候申鱼,會先查找他的自身的屬性愤诱,如果找到,則立刻返回捐友,如果找不到淫半,就去他的基引用找(再找不到,就找基引用的基引用...)匣砖。也就是之前構(gòu)造函數(shù)的屬性已經(jīng)在實例上了科吭,可以找到昏滴,接下來找基引用,就新增age屬性了对人。并且新增到了實例本身上影涉,不是還掛在基引用上。
所以你會看到规伐,如果o.constructor.prototype = { } 一個新的空對象(被清空了)的時候。之前構(gòu)建的實例是不變的(因為本身已經(jīng)富有所有屬性了)匣缘,之后再構(gòu)建的實例是只有構(gòu)造函數(shù)的屬性了猖闪,因為基引用是空的,沒什么可添加的肌厨。如果o.constructor.prototype = { 非空對象}培慌,那么就會是構(gòu)造函數(shù)屬性+基引用屬性了。
使用給基引用添加屬性達到同步所有實例的屬性的目的柑爸。
使用原型繼承吵护,是為了節(jié)約空間,沒有必要在實例化的時候(會把構(gòu)造函數(shù)的屬性添加過來)把所有東西都加過來表鳍,只有在用的時候馅而,再去原型鏈上找到添加過來。

貼一個參考鏈接 http://www.cnblogs.com/FlyingCat/archive/2009/09/21/1570656.html


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末譬圣,一起剝皮案震驚了整個濱河市瓮恭,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌厘熟,老刑警劉巖屯蹦,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異绳姨,居然都是意外死亡登澜,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進店門飘庄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來脑蠕,“玉大人,你說我怎么就攤上這事竭宰】战迹” “怎么了?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵切揭,是天一觀的道長狞甚。 經(jīng)常有香客問我,道長廓旬,這世上最難降的妖魔是什么哼审? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任谐腰,我火速辦了婚禮,結(jié)果婚禮上涩盾,老公的妹妹穿的比我還像新娘十气。我一直安慰自己,他們只是感情好春霍,可當(dāng)我...
    茶點故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布砸西。 她就那樣靜靜地躺著,像睡著了一般址儒。 火紅的嫁衣襯著肌膚如雪芹枷。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天莲趣,我揣著相機與錄音鸳慈,去河邊找鬼。 笑死喧伞,一個胖子當(dāng)著我的面吹牛走芋,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播潘鲫,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼翁逞,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了次舌?” 一聲冷哼從身側(cè)響起熄攘,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎彼念,沒想到半個月后挪圾,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡逐沙,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年哲思,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片吩案。...
    茶點故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡棚赔,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出徘郭,到底是詐尸還是另有隱情靠益,我是刑警寧澤,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布残揉,位于F島的核電站胧后,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏抱环。R本人自食惡果不足惜壳快,卻給世界環(huán)境...
    茶點故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一纸巷、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧眶痰,春花似錦瘤旨、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至七婴,卻和暖如春宏胯,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背本姥。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留杭棵,地道東北人婚惫。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像魂爪,于是被迫代替她去往敵國和親先舷。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,675評論 2 359

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