javascript的原型鏈繼承

原型模式

創(chuàng)建每個函數(shù)都有一個原型屬性prototype不铆,這個屬性是一個指針蝌焚,指向函數(shù)的原型對象。默認情況下誓斥,所有原型對象都會自動獲得一個constructor(構造函數(shù))屬性综看,這個函數(shù)包含一個指向prototype屬性所在函數(shù)的指針。

調(diào)用構造函數(shù)創(chuàng)建一個新實例后岖食,該實例的內(nèi)部將包含一個指針(內(nèi)部屬性)红碑,指向構造函數(shù)的原型對象。ECMA-262第五版中,這個指針叫[[Prototype]]析珊。


來源JavaScript高級程序設計P148

檢測對象屬性方法:

hasOwnProperty():

檢測一個屬性存在于原型中羡鸥,還是實例中。當給定的屬性存在實例中忠寻,才返回true惧浴。hasOwnProperty 是 Object.prototype 的屬性,創(chuàng)建一個對象奕剃,會繼承Object.prototype上面的所有屬性衷旅。

object.keys(obj):

返回一個包含所有可枚舉屬性的字符串數(shù)組。

// getFoo is a property which isn't enumerable

var myObj=Object.create({},{getFoo:{value:function(){returnthis.foo;}}});

myObj.foo=1;

console.log(Object.keys(myObj));// console: ['foo']

Object.getOwnPropertynames(obj)

返回一個由指定對象的所有自身屬性的屬性名(包括不可枚舉屬性但不包括Symbol值作為名稱的屬性)組成的數(shù)組纵朋。

原型鏈

原型鏈的基本模式如下:

function SuperType() {

? ? this.property = true;

}

SuperType.prototype.getSuperValue = function() {

? ? return this.property;

}

function SubType() {

? ? this.subproperty = false;

}

SubType.prototype? = new SuperType();? //繼承了SuperType

SubType.prototype.getSubValue = function() {

? ? return this.subproperty;

}

var instance = new SubType();

console.log(instance.getSuperValue());? ? ? //true

來源JavaScript 高級程序設計P163

使用不同的方法創(chuàng)建對象:

語法創(chuàng)建:

var? o = {a:1};

構造函數(shù)創(chuàng)建

function Graph() {

? this.vertices = [];

? this.edges = [];

}

var g = new Graph();? ? //? 實例化對象? ?Graph { vertices: [], edges: [] }

Object.create 創(chuàng)建的對象

var a = {a:1};

? var b? = Object.create(a);

? console.log(b);

b對象包含的屬性值

每個實例對象都有一個私有屬性__proto__指向函數(shù)的原型對象柿顶。

所有函數(shù)的默認原型都是Object的實例,都有一個__proto__屬性操软,指向Object.prototype嘁锯。

class創(chuàng)建對象

class Person {

? ? constructor(name) {

? ? ? ? this.name = name;

? ? }

? ? getName() {

? ? ? ? console.log(this.name);

? ? }

}

var person1 = new Person('tom');

console.log(person1);

參考

JavaScript高級程序設計

繼承與原型鏈

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市聂薪,隨后出現(xiàn)的幾起案子家乘,更是在濱河造成了極大的恐慌,老刑警劉巖藏澳,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件仁锯,死亡現(xiàn)場離奇詭異,居然都是意外死亡翔悠,警方通過查閱死者的電腦和手機业崖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來凉驻,“玉大人腻要,你說我怎么就攤上這事±缘牵” “怎么了雄家?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長胀滚。 經(jīng)常有香客問我趟济,道長,這世上最難降的妖魔是什么咽笼? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任顷编,我火速辦了婚禮,結果婚禮上剑刑,老公的妹妹穿的比我還像新娘媳纬。我一直安慰自己双肤,他們只是感情好,可當我...
    茶點故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布钮惠。 她就那樣靜靜地躺著茅糜,像睡著了一般。 火紅的嫁衣襯著肌膚如雪素挽。 梳的紋絲不亂的頭發(fā)上蔑赘,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天,我揣著相機與錄音预明,去河邊找鬼缩赛。 笑死,一個胖子當著我的面吹牛撰糠,可吹牛的內(nèi)容都是我干的酥馍。 我是一名探鬼主播,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼窗慎,長吁一口氣:“原來是場噩夢啊……” “哼物喷!你這毒婦竟也來了卤材?” 一聲冷哼從身側響起遮斥,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎扇丛,沒想到半個月后术吗,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡帆精,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年较屿,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片卓练。...
    茶點故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡隘蝎,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出襟企,到底是詐尸還是另有隱情嘱么,我是刑警寧澤,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布顽悼,位于F島的核電站曼振,受9級特大地震影響,放射性物質發(fā)生泄漏蔚龙。R本人自食惡果不足惜冰评,卻給世界環(huán)境...
    茶點故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望木羹。 院中可真熱鬧甲雅,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至函匕,卻和暖如春娱据,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背盅惜。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工中剩, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人抒寂。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓结啼,卻偏偏與公主長得像,于是被迫代替她去往敵國和親屈芜。 傳聞我的和親對象是個殘疾皇子郊愧,可洞房花燭夜當晚...
    茶點故事閱讀 43,724評論 2 351

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