一泊藕、全局對(duì)象 window:?
?ECMAScript 規(guī)定全局對(duì)象叫做 global,但是瀏覽器把 window 作為全局對(duì)象(瀏覽器先存在的)难礼,window 就是一個(gè)哈希表娃圆,有很多屬性。window 的屬性就是全局變量蛾茉。
這些全局變量分為兩種:
一種是 ECMAScript 規(guī)定的
global.parseInt
global.parseFloat
global.Number
global.String
global.Boolean
global.Object
一種是瀏覽器自己加的屬性
window.alert
window.prompt
window.comfirm
window.console.log
window.console.dir
window.document
window.document.createElement
window.document.getElementById
所有 API 都可以在 MDN 里找到詳細(xì)的資料讼呢。
二、全局函數(shù):
1谦炬、Number:
var n = new Number(1) 創(chuàng)建一個(gè) Number 對(duì)象
1 與 new Number(1) 的區(qū)別自己畫(huà)內(nèi)存圖理解(饑人谷芳姐專屬)
2悦屏、String:
var s = new String('hello') 創(chuàng)建一個(gè) String 對(duì)象
'hello' 與 new String('hello') 的區(qū)別自己畫(huà)內(nèi)存圖理解(饑人谷芳姐專屬)
3节沦、Boolean:
var b = new Boolean(true) 創(chuàng)建一個(gè) Boolean 對(duì)象
true 與 new Boolean(true) 的區(qū)別自己畫(huà)內(nèi)存圖理解(饑人谷芳姐專屬)
4、Object:
var o1 = {}
var o2 = new Object()
o1 和 o2 沒(méi)區(qū)別
三础爬、公用的屬性藏在哪:(原型和原型鏈)
?所有對(duì)象都有 toString 和 valueOf 屬性甫贯,所以我們沒(méi)有必要給每個(gè)對(duì)象一個(gè) toString 和 valueOf 屬性,JS 的做法是把 toString 和 valueOf 放在一個(gè)對(duì)象里(暫且叫做公用屬性組成的對(duì)象)看蚜,然后讓每一個(gè)對(duì)象的 proto 存儲(chǔ)這個(gè)「公用屬性組成的對(duì)象」的地址叫搁。
?JavaScript 規(guī)定,所有對(duì)象都有自己的原型對(duì)象(prototype),任何一個(gè)對(duì)象失乾,都可以充當(dāng)其他對(duì)象的原型常熙;由于原型對(duì)象也是對(duì)象,所以它也有自己的原型碱茁。因此裸卫,就會(huì)形成一個(gè)“原型鏈”(prototype chain):對(duì)象到原型,再到原型的原型纽竣,形成原型鏈墓贿。
附加:
var 對(duì)象 = new 函數(shù)()
對(duì)象._ proto_ === 對(duì)象的構(gòu)造函數(shù).prototype
// 推論
var number = new Number()
number._ proto_ = Number.prototype
Number._ proto_ = Function.prototype // 因?yàn)?Number 是 Function 的實(shí)例
var object = new Object()
object._ proto_ = Object.prototype
Object._ proto_ = Function.prototype // 因?yàn)?Object 是 Function 的實(shí)例
var function = new Function()
function._ proto_ = Function.prototype
Function._ proto_ == Function.prototye // 因?yàn)?Function 是 Function 的實(shí)例!
插播一道經(jīng)典例題:
var a = {n:1};
var b = a;
a.x = a = {n:2};
問(wèn) 1蜓氨、alert(a.x);
2聋袋、alert(b.x);
答:1、undefined
2穴吹、[object,object]