2020-01-17

JS中的對象都包含了一個prototype的內(nèi)部屬性旨别,這個屬性所對應的就是該對象的原型。

1、原型分為顯式原型和隱式原型牢酵。顯示原型對應的是prototype屬性,隱式原型對應的是__proto__屬性衙猪。

2馍乙、所有對象(萬物皆對象)都有__proto__屬性,包括函數(shù)垫释、示例等丝格,只有函數(shù)才有prototype屬性。

3棵譬、prototype屬性值其實也是一個對象显蝌,類型為Object。它有一個自帶屬性constructor,這個constructor是一個指針茫船,指向函數(shù)本身琅束。比如 function Animal(){}。? ? Animal是一個函數(shù)指針算谈,可以叫函數(shù)對象涩禀。Animal.prototype是一個object對象。Animal.prototype.constructor == Animal然眼。

4艾船、一般情況下,一個實例的__proto__屬性等于實例的類型的原型高每。這句話比較抽象屿岂。舉個例子,var animal = new Animal()鲸匿,這里 animal.__proto__ = Animal.prototype爷怀。通俗的說法可以為,animal的原型為Animal.prototype带欢,但是這里其實涉及到顯式和隱式原型的概念运授,很容易用混烤惊。

5、如果訪問一個對象的屬性吁朦,其查找順序是柒室,先查找對象本身的屬性(可以理解為給this添加的屬性),然后查找實例的__proto__(即原型)中的屬性逗宜,在然后查找原型的__proto__里的屬性雄右,就這這樣一直查找下去,直到找到纺讲。最終找到的是Object.prototype.__proto__ 擂仍,它等于 null。 其實這個過程就是原型鏈熬甚。通俗點就是以__proto__屬性為媒介防楷,把對象相關的原型以鏈式方式串聯(lián)起來,以方便屬性和方法的訪問则涯。prototype就是要串的原型复局。可以把__proto__理解為線粟判,而prototype是珠子亿昏。

6、constructor屬性指向原型的構造方法档礁。其實這個屬性在示例new的過程中是沒有作用的角钩。在實例的instance of 方法也不是以它為依據(jù)的。后來我想到這個屬性有一個作用呻澜。比如递礼,我們有一個實例,但是無法獲取到實例的類(匿名自執(zhí)行函數(shù))羹幸,可以通過實例的constructor獲取到這個類脊髓,然后給類添加方法或屬性。不過這種使用方法好像也沒有什么必要栅受。只是為了加深理解将硝。

//constructor的作用,匿名自執(zhí)行函數(shù)場景屏镊。

var bydCar,ytCar ;

(function () {

function Car() {

}

bydCar = new Car();

ytCar= new Car();

})();

bydCar.constructor.prototype.name = 'BYD';

console.log("bydCar車的品牌:" + bydCar.name);

console.log("ytCar車的品牌:" + bydCar.name);

7依疼、new方法都做了哪些事情。這個還是以var animal = new Animal();為例而芥。

首先是 創(chuàng)建一個空對象律罢。?

然后把對象的__proto__屬性指向原型。

接下來棍丐,設置函數(shù)的this指向上邊的對象误辑,并執(zhí)行函數(shù)虫腋。

//new的過程。

var obj = {};

obj.__proto__ = Animal.prototype;

Animal.call(obj);//如果Animal中有return 就是把return結果作為new的對象稀余,否則就是上邊創(chuàng)建的obj對象。

原型鏈:原型鏈是是有一些用來繼承和共享屬性的對象組成的對象鏈趋翻。并且原型鏈的長度是有限的睛琳。

? 原型鏈的核心就是依賴對象的_proto_的指向,當自身不存在的屬性時踏烙,就一層層的扒出創(chuàng)建對象的構造函數(shù)师骗,直至到Object時,就沒有_proto_指向了讨惩。

最簡單的原型鏈分析

function Person(name){

this.name = name;

}

var p = new Person();

//p ---> Person.prototype --->Object.prototype---->null

屬性搜索原則:

? ? 1.當訪問一個對象的成員的時候辟癌,會現(xiàn)在自身找有沒有,如果找到直接使用。

? ? 2.如果沒有找到荐捻,則去原型鏈指向的對象的構造函數(shù)的prototype中找黍少,找到直接使用,沒找到就返回undifined或報錯处面。

原型繼承

//原型繼承的基本案例

function Person(name, age) {

this.name = name;

this.age = age;

}

//1.直接替換原型對象

var parent = {

sayHello : function() {

console.log("方式1:替換原型對象");

}

}

Person.prototype = parent;

var p = new Person("張三", 50);

p.sayHello();

//2.混入式原型繼承

console.log(".............混入式原型繼承..............");

function Student(name, age) {

this.name = name;

this.age = age;

}

var parent2 = {

sayHello : function() {

console.log("方式2:原型繼承之混入式加載成員");

}

}

for ( var k in parent2) {

Student.prototype[k] = parent2[k];

}

var p = new Student("張三", 50);

p.sayHello();

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末厂置,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子魂角,更是在濱河造成了極大的恐慌昵济,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件野揪,死亡現(xiàn)場離奇詭異访忿,居然都是意外死亡,警方通過查閱死者的電腦和手機斯稳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進店門海铆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人挣惰,你說我怎么就攤上這事游添。” “怎么了通熄?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵唆涝,是天一觀的道長。 經(jīng)常有香客問我唇辨,道長廊酣,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任赏枚,我火速辦了婚禮亡驰,結果婚禮上晓猛,老公的妹妹穿的比我還像新娘。我一直安慰自己凡辱,他們只是感情好戒职,可當我...
    茶點故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著透乾,像睡著了一般洪燥。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上乳乌,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天捧韵,我揣著相機與錄音,去河邊找鬼汉操。 笑死再来,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的磷瘤。 我是一名探鬼主播芒篷,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼采缚!你這毒婦竟也來了梭伐?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤仰担,失蹤者是張志新(化名)和其女友劉穎糊识,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體摔蓝,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡赂苗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了贮尉。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片拌滋。...
    茶點故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖猜谚,靈堂內(nèi)的尸體忽然破棺而出败砂,到底是詐尸還是另有隱情,我是刑警寧澤魏铅,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布昌犹,位于F島的核電站,受9級特大地震影響览芳,放射性物質發(fā)生泄漏斜姥。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望铸敏。 院中可真熱鬧缚忧,春花似錦、人聲如沸杈笔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蒙具。三九已至球榆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間店量,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工鞠呈, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留融师,地道東北人。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓蚁吝,卻偏偏與公主長得像旱爆,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子窘茁,可洞房花燭夜當晚...
    茶點故事閱讀 44,884評論 2 354

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