原型與原型鏈

一、全局對(duì)象

window的屬性

window有很多屬性搀突,重點(diǎn)介紹以下幾個(gè):
parseInt()是將其它數(shù)據(jù)類(lèi)型轉(zhuǎn)成整型數(shù)值
parseFloat()是將其他數(shù)據(jù)類(lèi)型轉(zhuǎn)成浮點(diǎn)型數(shù)值
Number()是將其他數(shù)據(jù)類(lèi)型轉(zhuǎn)成數(shù)值型
String()是將其它數(shù)據(jù)類(lèi)型轉(zhuǎn)成字符型
Boolean()是將其它數(shù)據(jù)類(lèi)型轉(zhuǎn)成布爾值
Object()是將其他數(shù)據(jù)類(lèi)型轉(zhuǎn)成對(duì)象
以上是ECMA Script規(guī)定的

每個(gè)瀏覽器都會(huì)有自己私有的屬性仰迁,以下屬性沒(méi)有寫(xiě)進(jìn)ECMA Script規(guī)定中:
alert()是彈窗提示
prompt()是用戶可以自己填寫(xiě)內(nèi)容顽分,并獲取該內(nèi)容
confirm()是用戶可以自己進(jìn)行確認(rèn)卒蘸,如果確認(rèn)則返回true,取消則返回false
console.log()是用戶可以自控制臺(tái)打印出想要打印的東西
document()是關(guān)于文檔的屬性

var n1 = 1
var n2 = new Number(1)

請(qǐng)問(wèn)澄步,此時(shí)n1和n2有什么區(qū)別呢村缸?
這里的n1只是一個(gè)數(shù)字,存放在stack中仇箱,打印出的n1只是數(shù)字1
n2就會(huì)是一個(gè)對(duì)象东羹,stack里面存放的是一個(gè)地址属提,heap中存放了很多關(guān)于它的屬性。


n1斟薇,n2在內(nèi)存中的存儲(chǔ)形式

我們知道堪滨,Number沒(méi)有toString的屬性袱箱,只有object才有toString的屬性义矛,那我們?cè)趯?duì)Number進(jìn)行字符串轉(zhuǎn)換(toString())的時(shí)候,內(nèi)存里是一個(gè)怎樣的過(guò)程呢筐咧?
var n = 1
n.toString() ? ? ? //這里n是不應(yīng)該有toString屬性的量蕊,其實(shí)內(nèi)部有這樣的一個(gè)變換
==> temp = new Number(n)
? ? ? ?temp.toString()
之后再把temp清除

二艇挨、字符串的屬性

charAt() 獲取某一個(gè)索引對(duì)應(yīng)的字符

var s = 'abcdefg'
s.charAt(0)        //'a'   =>s[0]

charCodeAt() 獲取某一個(gè)索引對(duì)應(yīng)的字符的編碼

var s = 'a'
s.charCodeAt(0)        //97

toString(16)獲取數(shù)字的十六進(jìn)制的值

(100).toString(16)   //64

trim() 去掉空格的字符串

'    username      '.trim()
//"username"

concat() 連接兩個(gè)字符串

var s1 = 'Hello'
var s2 = 'World'
s1.concat(s2)      
//HelloWorld

slice() 分割字符串

var s1 = 'Hello'
s1.slice(0,2)
//"He"
s1.slice(0,3)
//"Hel"

replace() 替換字符串中的某位元素

var s1 = 'Hello'
s1.replace('e','o')
//"Hollo"

但值得注意的是势就,s1還是"Hello"

split() 將一個(gè)字符串分割為字符串?dāng)?shù)組

var str="How are you doing today?"
document.write(str.split(" ") + "<br />")
document.write(str.split("") + "<br />")
document.write(str.split(" ",3))

//How,are,you,doing,today?
//H,o,w, ,a,r,e, ,y,o,u, ,d,o,i,n,g, ,t,o,d,a,y,?
//How,are,you

提問(wèn):打印結(jié)果是什么?

var f1 = false
var f2 = new Boolean(false)
if(f1){console.log(1)}
if(f2){console.log(2)}

打印的結(jié)果是2袖牙,因?yàn)閷?duì)象的bool值都為true舅锄,f2是一個(gè)對(duì)象

三、原型與原型鏈

每一個(gè)對(duì)象都有一些公共的屬性畴蹭,例如toString()叨襟,valueOf()等等幔荒,如果創(chuàng)建一個(gè)對(duì)象,就要給這個(gè)對(duì)象這些屬性的話右犹,就很浪費(fèi)空間傀履,因此莉炉,我們給這個(gè)對(duì)象一個(gè)_proto_屬性碴犬,這個(gè)屬性里就包含了該對(duì)象擁有的公共屬性服协,我們將這個(gè)公共屬性全部放到一個(gè)對(duì)象里,這就是叫做prototype窘游,也就是原型跳纳。我們可以看到:
var o1 = {}
var o2 = {}
o1.toString === o2.toString
true
說(shuō)明o1和o2的toString是一樣的寺庄,他們公用同一個(gè)toString力崇。

然而亮靴,不是對(duì)象的其他的數(shù)據(jù)類(lèi)型也有很多公共的屬性于置,例如Number俱两,Number有很多自帶的屬性,例如toString(16)休讳,toFixed()尿孔,toExponential()活合,這些屬性是Object沒(méi)有的,這時(shí)留晚,Number一開(kāi)始就指向的是所有Number自帶的公共屬性告嘲,在這個(gè)公共屬性中橄唬,又有一個(gè)_proto_,指向Object的公共屬性隆判,Object的屬性是所有數(shù)據(jù)類(lèi)型的公共屬性僧界。prototype是瀏覽器給的捂襟,因?yàn)椴蛔寯?shù)據(jù)類(lèi)型自帶的共有屬性被垃圾回收,prototype也是一個(gè)對(duì)象郎汪。

原型鏈

如圖所示,string抛计,number吹截,bool都會(huì)先指向自帶的公共屬性凝危,然后再指向object的公共屬性,因此形成一個(gè)原型鏈懦铺。

提問(wèn):有下劃線的proto和無(wú)下劃線的prototype的區(qū)別是什么冬念?
答:第一個(gè)是對(duì)象的屬性牧挣,第二個(gè)是函數(shù)的屬性

四、燒腦環(huán)節(jié)

創(chuàng)建對(duì)象

我們應(yīng)當(dāng)首先看懂上面的圖裆针,new一個(gè)對(duì)象后世吨,該對(duì)象的_proto等于該函數(shù)的prototype的另假。
例如:var n = new Number(1)
此時(shí)奏甫,n是一個(gè)對(duì)象胜蛉,n的_proto
指向的是Number的prototype。
以下定理是我們應(yīng)該牢記的:
1.對(duì)象會(huì)有一個(gè)_proto屬性
2.函數(shù)有一個(gè)prototype對(duì)象
3.prototype對(duì)象 是一個(gè)對(duì)象,所以它有_proto
恕稠,所有的prototype對(duì)象的_proto_都指向Object.prototype

var 對(duì)象 = new 函數(shù)()
①對(duì)象._proto_ === 函數(shù).prototype???????
②函數(shù).prototype._proto_ === Object.prototype
③函數(shù)._proto_ === Function.prototype
④Function._proto_ === Function.prototyoe
⑤Function.prototype._proto_ ===Object.prototype

對(duì)于②,函數(shù).prototype是一個(gè)對(duì)象凑懂,所以它的_proto是指向Object.prototype
對(duì)于③巷帝,函數(shù)是由Function構(gòu)造的笤闯,所以它的_proto
是指向Function的prototype
對(duì)于④时呀,F(xiàn)unction優(yōu)先是一個(gè)函數(shù)瞧预,再是一個(gè)對(duì)象滩愁,所以在④中,F(xiàn)unction的_proto_是指向自己的prototype

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末雏逾,一起剝皮案震驚了整個(gè)濱河市仇让,隨后出現(xiàn)的幾起案子获枝,更是在濱河造成了極大的恐慌,老刑警劉巖嚣崭,帶你破解...
    沈念sama閱讀 216,544評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異芦劣,居然都是意外死亡说榆,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)串慰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)邦鲫,“玉大人庆捺,你說(shuō)我怎么就攤上這事屁魏。” “怎么了醉者?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,764評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵撬即,是天一觀的道長(zhǎng)呈队。 經(jīng)常有香客問(wèn)我,道長(zhǎng)粒竖,這世上最難降的妖魔是什么几于? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,193評(píng)論 1 292
  • 正文 為了忘掉前任沿彭,我火速辦了婚禮,結(jié)果婚禮上漆弄,老公的妹妹穿的比我還像新娘造锅。我一直安慰自己,他們只是感情好倒谷,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布恨锚。 她就那樣靜靜地躺著倍靡,像睡著了一般。 火紅的嫁衣襯著肌膚如雪他挎。 梳的紋絲不亂的頭發(fā)上捡需,一...
    開(kāi)封第一講書(shū)人閱讀 51,182評(píng)論 1 299
  • 那天站辉,我揣著相機(jī)與錄音,去河邊找鬼饰剥。 笑死,一個(gè)胖子當(dāng)著我的面吹牛绷蹲,可吹牛的內(nèi)容都是我干的顾孽。 我是一名探鬼主播,決...
    沈念sama閱讀 40,063評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼拦英,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼疤估!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起做裙,我...
    開(kāi)封第一講書(shū)人閱讀 38,917評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤肃晚,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后拧廊,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體晋修,經(jīng)...
    沈念sama閱讀 45,329評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡墓卦,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了睁本。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片呢堰。...
    茶點(diǎn)故事閱讀 39,722評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡凡泣,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出骂维,到底是詐尸還是另有隱情贺纲,我是刑警寧澤,帶...
    沈念sama閱讀 35,425評(píng)論 5 343
  • 正文 年R本政府宣布来颤,位于F島的核電站稠肘,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏滑黔。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評(píng)論 3 326
  • 文/蒙蒙 一庵佣、第九天 我趴在偏房一處隱蔽的房頂上張望汛兜。 院中可真熱鬧,春花似錦粥谬、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,671評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)感耙。三九已至,卻和暖如春抑月,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背题诵。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,825評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工性锭, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留叫胖,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,729評(píng)論 2 368
  • 正文 我出身青樓怎棱,卻偏偏與公主長(zhǎng)得像绷跑,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子砸捏,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評(píng)論 2 353

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