JS里的內(nèi)置對(duì)象
全局對(duì)象
ECMAScript 規(guī)定全局對(duì)象叫做 global妙啃,瀏覽器默認(rèn)全局對(duì)象是window
ECMAScript規(guī)定的函數(shù),在任何地方可以使用的函數(shù)
global.parseInt
global.parseFloat
global.Number
global.String
global.Boolean
global.Object
瀏覽器私有的函數(shù)
window.alert
window.prompt
window.comfirm
window.console.log
window.console.dir
window.document
window.document.createElement
window.document.getElementById
簡單類型與對(duì)象
var n1 = 1 //n1是簡單的數(shù)據(jù)類型钩述,值是1
n1.toString() //'1'
var n2 = new Number(1) //n2是對(duì)象杯瞻,valueOf值是1
簡單類型是沒有屬性的又官,那是如何調(diào)用toString()方法的呢熄驼?簡單的類型是怎么用對(duì)象的方法的珠十?以n1.toString為例
生成一個(gè)臨時(shí)對(duì)象冕象,臨時(shí)對(duì)象里再調(diào)用toString(),具體步驟如下:
1龟梦、n1.toString()隐锭,
2、生成一個(gè)臨時(shí)對(duì)象temp计贰,temp = new Number(n1)
3钦睡、temp對(duì)象調(diào)用toString(),temp.toString()
簡單類型加上一個(gè)屬性并賦值躁倒,是否可以取到該屬性的值荞怒?
var n1 = 1
n1.*** = 2 //臨時(shí)對(duì)象被回收
n1.*** = ? //undefined
所以JS中簡單類型也可以看作是一個(gè)對(duì)象
當(dāng)一個(gè)變量使用一個(gè)屬性或方法時(shí),JS會(huì)判斷此變量是否是對(duì)象秧秉,若不是對(duì)象褐桌,則包裝成一個(gè)對(duì)象。
原型
object的共有屬性 Object.protype象迎,這就是原型荧嵌,Object的共有屬性是所有對(duì)象的共有屬性
prototype屬性,這個(gè)屬性包含一個(gè)對(duì)象__proto__砾淌,用來存共有屬性
var o1 = {}
o1.__proto__ === Object.prototype //true
原型鏈
JS在創(chuàng)建對(duì)象(不論是普通對(duì)象還是函數(shù)對(duì)象)的時(shí)候啦撮,都有一個(gè)叫做__proto__的內(nèi)置屬性,用于指向創(chuàng)建它的函數(shù)對(duì)象的原型對(duì)象prototype拇舀。
var 對(duì)象 = new 函數(shù)()
對(duì)象.__proto__ === 函數(shù).prototype
__proto__ //對(duì)象的屬性
prototype //函數(shù)的屬性
函數(shù).prototype 也是一個(gè)對(duì)象
函數(shù).prototype.__proto__ === Object.prototype
如下例
var n = new Number(2);
n.__proto__ //存Number的共有屬性
n.__proto__ === Number.prototype //true
n.__proto__.__proto__ //存對(duì)象的共有屬性
n.__proto__.__proto__ === Object.prototype //true
Number.prototype是Number共有屬性的引用
n.__proto__是Number的共有屬性的引用