js創世紀 刨根問底原型和原型鏈

2022-08-21 04:42:23 字數 3205 閱讀 8105

看圖說話:

1、物件內部具有[[prototype]]屬性,該屬性不可直接訪問,瀏覽器通過__proto__(兩條『_』)可以讓使用者讀寫該內部屬性,最重要的是,該屬性指向建立本物件的原型物件。

2、每個原型物件內部都有乙個獨有屬性constructor,指向該原型物件的建構函式。

3、原型物件也是物件,因此它也有自己的__proto__屬性,最終會指向object.prototype

線(9)obect.prototype物件和function.prototype物件都是瀏覽器建立的,它們並非誰的例項。通過__proto__屬性將二者聯絡起來,從而使得函式也是物件。

首先瀏覽器給了兩個物件 functon.prototype和object.prototype.以及兩個函式function()和object()

因為functon.prototype和object.prototype這兩傢伙也是物件,既然是物件就有__proto__屬性,但是他兩個是瀏覽器給的,並不是建構函式構造出來的.

他兩個不是誰的例項,可以看出來所有的例項都是物件,但物件並不一定是例項,人都是媽生的,但是第一對男女可能是女媧創造的

然後神(瀏覽器)指定他們的__proto__,讓object.prototype的__proto__為null,function.prototype物件的__proto__屬性指向object.prototype物件.

再然後瀏覽器建立了個function()函式,既然是函式那就有prototype,就讓這個函式的prototype指向functon.prototype,這樣他構造出來的函式物件的__proto__就指向function.prototype

根據萬物皆物件的指導原則,這個function()函式也是物件,瀏覽器就讓這個function()函式的__proto__也指向functon.prototype,怎麼理解呢?

因為function()函式並不是哪個函式誰構造出來的,然後沒有建構函式也就沒有建構函式的prototype,這樣也就無法設定他的__proto__屬性

但是他畢竟也是乙個函式物件就讓他的__proto__指向了自己prototype

邏輯上就是自己生成自己,讓自己的__proto__指向自己的prototype

==是蛋生雞還是雞生蛋?都不是,是瀏覽器這位上古大神創造的雞和蛋.

接下來就是object()這個函式了,他的__proto__指向function.prototype,這好理解,因為這個函式是始祖函式function創造的,他的__proto__就指向function的prototype

又因為他是專門用來生成物件的,所以我讓他的prototype指向object.prototype,這樣以後通過他構造的物件的__proto__就指向object.prototype了.

原型物件並不是當前建構函式的例項,如果不指定,預設是object()函式的例項也就是object.prototype,如果指定了那就另當別論.

f.b()//報錯

function parent() ;

this.show = function ()

}function child()

}child.prototype = new parent();

var parent = new parent();

var child1 = new child();

var child2 = new child();

child1.a = 11;

child2.a = 12;

parent.show();//1,[1,2,1],5

child1.show();//11,[1,2,1],5

child2.show();//12,[1,2,1],5

child1.change();

child2.change();

parent.show();// 1,[1,2,1],5

child1.show();//5,[1,2,1,11,12],5

child2.show();//6,[1,2,1,11,12],5

最後這個案例下圖分析:

刨根問底ioremap (一)

硬是在動態對映或者靜態對映後,只能讀不能寫,逼著我對ioremap刨根問底 1 arch alpha include asm io.h static inline void iomem ioremap unsigned long port,unsigned long size 尋找io concat...

刨根問底ajax原理與封裝

說起ajax,大家都不陌生。但是由於目前很多框架或者庫等都對網路請求做了封裝,導致了很多初學者只知其然而不知其所以然。所以今天我們就詳細了解一下ajax的實現原理和封裝ajax的關鍵步驟。ajax的核心是xmlhttprequest物件。首先我們先建立乙個xmlhttprequest物件var xh...

刨根問底ajax原理與封裝

摘要 說起ajax,大家都不陌生。但是由於目前很多框架或者庫等都對網路請求做了封裝,導致了很多初學者只知其然而不知其所以然。所以今天我們就詳細了解一下ajax的實現原理和封裝ajax的關鍵步驟。ajax的核心是xmlhttprequest物件。說起ajax,大家都不陌生。但是由於目前很多框架或者庫等...