js原型與原型鏈

全局對象 window

ECMAScript 規(guī)定全局對象叫做 global,但是瀏覽器把 window 作為全局對象(瀏覽器先存在的)

window 就是一個哈希表掏缎,有很多屬性。

window 的屬性就是全局變量蒙谓。

這些全局變量分為兩種:

  1. 一種是 ECMAScript 規(guī)定的

    • global.parseInt
    • global.parseFloat
    • global.Number
    • global.String
    • global.Boolean
    • global.Object
  2. 一種是瀏覽器自己加的屬性

    • window.alert
    • window.prompt
    • window.comfirm
    • window.console.log
    • window.console.dir
    • window.document
    • window.document.createElement
    • window.document.getElementById
  3. document

    瀏覽器私有文檔柜候,w3c制定DOM文檔。瀏覽器BOM

所有 API 都可以在 MDN 里找到詳細的資料汽摹。

全局函數(shù)

Number()
var n = new Number(1) 創(chuàng)建一個 Number 對象
new Number(1) 的區(qū)別是什么?

var a = 1
var c = new Number(1)
a == c
true
a === c
false
a.valueOf() === c.valueOf()
true

a.xxx = 2//操作之后會被垃圾回收
a.xxx//調(diào)取不到
undefined

var n = new Number(1)
//js在設(shè)計時苦锨,被要求語法與java相似逼泣,js之父覺得這樣太麻煩了。
//所以設(shè)計了這兩種方式舟舒。

c里面有__proto__才可以c.tostring()拉庶。

為什么a沒有,卻也可以秃励?

臨時轉(zhuǎn)化temp = new Number(n);temp.toString

String()
var s = new String('hello') 創(chuàng)建一個 String 對象
'hello'new String('hello') 的區(qū)別是什么氏仗?

常用api

trim()

concat()

slice()

replace()

String as object

Boolean()
var b = new Boolean(true) 創(chuàng)建一個 Boolean 對象
truenew Boolean(true) 的區(qū)別是什么?

var b = new Boolean(false)
if (b) {
    console.log('hi')
}
'hi'

Object()
var o1 = {}
var o2 = new Object()
o1 和 o2 沒區(qū)別夺鲜,但是o1 == o2為false皆尔。

公用的屬性藏在哪

所有對象都有 toStringvalueOf 屬性,那么我們是否有必要給每個對象一個 toStringvalueOf 呢币励?

明顯不需要慷蠕。

JS 的做法是把 toStringvalueOf 放在一個對象里(暫且叫做公用屬性組成的對象)

然后讓每一個對象的 __proto__ 存儲這個「公用屬性組成的對象」的地址。

object.prototype是源頭食呻!

figure1.jpg

重要公式

var 對象 = new 函數(shù)()
對象.__proto__ === 對象的構(gòu)造函數(shù).prototype
__proto__和prototype的區(qū)別流炕。
__proto__是對象的澎现,prototype是函數(shù)的,在內(nèi)存圖中地址相同每辟,指向同一個結(jié)構(gòu)剑辫。

// 推論
var number = new Number()
number.__proto__ = Number.prototype
Number.__proto__ = Function.prototype // 因為 Number 是 Function 的實例

var object = new Object()
object.__proto__ = Object.prototype
Object.__proto__ = Function.prototype // 因為 Object 是 Function 的實例

var function = new Function()
function.__proto__ = Function.prototype
Function.__proto__ == Function.prototye // 因為 Function 是 Function 的實例!

//Object是函數(shù)
typeof(Object)
"function"

//prototype本身就是一個對象
typeof(Object.prototype)
"object"
函數(shù).prototype.__proto__ === Object.prototype

//function也是對象
Function.__proto__ == Function.prototype//true
Function.prototype.__proto__ == Object.prototype

Number.prototype.__proto__ == Object.prototype//true

Object.__proto__ == Function.prototype//true
Number.__proto__ == Function.prototype//true
Number.__proto__ == Object.__proto__//true

Function.__proto__.__proto__ == Object.prototype//true

Object.__proto__.__proto__ == Object.prototype//true
Object.prototype.__proto__ //null
Object.__proto__.__proto__.__proto__ //null
Function.__proto__.__proto__.__proto__//null
Number.__proto__.__proto__.__proto__//null
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末渠欺,一起剝皮案震驚了整個濱河市妹蔽,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌峻堰,老刑警劉巖讹开,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件盅视,死亡現(xiàn)場離奇詭異捐名,居然都是意外死亡,警方通過查閱死者的電腦和手機闹击,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進店門镶蹋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人赏半,你說我怎么就攤上這事贺归。” “怎么了断箫?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵拂酣,是天一觀的道長。 經(jīng)常有香客問我仲义,道長婶熬,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任埃撵,我火速辦了婚禮赵颅,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘暂刘。我一直安慰自己饺谬,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布谣拣。 她就那樣靜靜地躺著募寨,像睡著了一般。 火紅的嫁衣襯著肌膚如雪森缠。 梳的紋絲不亂的頭發(fā)上拔鹰,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天,我揣著相機與錄音辅鲸,去河邊找鬼格郁。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的例书。 我是一名探鬼主播锣尉,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼决采!你這毒婦竟也來了自沧?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤树瞭,失蹤者是張志新(化名)和其女友劉穎拇厢,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體晒喷,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡孝偎,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了凉敲。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片衣盾。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖爷抓,靈堂內(nèi)的尸體忽然破棺而出势决,到底是詐尸還是另有隱情,我是刑警寧澤蓝撇,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布果复,位于F島的核電站,受9級特大地震影響渤昌,放射性物質(zhì)發(fā)生泄漏虽抄。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一耘沼、第九天 我趴在偏房一處隱蔽的房頂上張望极颓。 院中可真熱鬧,春花似錦群嗤、人聲如沸菠隆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽骇径。三九已至,卻和暖如春者春,著一層夾襖步出監(jiān)牢的瞬間破衔,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工钱烟, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留晰筛,地道東北人嫡丙。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像读第,于是被迫代替她去往敵國和親曙博。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,490評論 2 348

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