javascript的三種對(duì)象類型:1、內(nèi)部對(duì)象,包括需要實(shí)例化才能使用的本地對(duì)象和不需要實(shí)例化就能使用的內(nèi)置對(duì)象;2、宿主對(duì)象,就是執(zhí)行JS腳本的環(huán)境提供的對(duì)象;3、自定義對(duì)象,就是開(kāi)發(fā)人員自己定義的對(duì)象。
本教程操作環(huán)境:windows7系統(tǒng)、javascript1.8.5版、Dell G3電腦。
javascript中的對(duì)象可以分為三大類,分別是內(nèi)部對(duì)象(本地對(duì)象和內(nèi)置對(duì)象)、宿主對(duì)象和自定義對(duì)象。
1、內(nèi)部對(duì)象
1)、本地對(duì)象,ECMAScript提供的需要實(shí)例化(new)才能使用的對(duì)象:
Object、Function、Array、String、Boolean、Number、Date、RegExp、Error、EvalError、RangeError、ReferenceError、SyntaxError、TypeError、URIError
2)、內(nèi)置對(duì)象,ECMAScript提供的不需要實(shí)例化就能使用的對(duì)象:
只有Global (全局對(duì)象)和 Math
Math 對(duì)象屬性
屬性 | 描述 |
---|---|
E | 返回算術(shù)常量 e,即自然對(duì)數(shù)的底數(shù)(約等于2.718)。 |
LN2 | 返回 2 的自然對(duì)數(shù)(約等于0.693)。 |
LN10 | 返回 10 的自然對(duì)數(shù)(約等于2.302)。 |
LOG2E | 返回以 2 為底的 e 的對(duì)數(shù)(約等于 1.4426950408889634)。 |
LOG10E | 返回以 10 為底的 e 的對(duì)數(shù)(約等于0.434)。 |
PI | 返回圓周率(約等于3.14159)。 |
SQRT1_2 | 返回 2 的平方根的倒數(shù)(約等于 0.707)。 |
SQRT2 | 返回 2 的平方根(約等于 1.414)。 |
Math 對(duì)象方法
方法 | 描述 |
---|---|
abs(x) | 返回 x 的絕對(duì)值。 |
acos(x) | 返回 x 的反余弦值。 |
asin(x) | 返回 x 的反正弦值。 |
atan(x) | 以介于 -PI/2 與 PI/2 弧度之間的數(shù)值來(lái)返回 x 的反正切值。 |
atan2(y,x) | 返回從 x 軸到點(diǎn) (x,y) 的角度(介于 -PI/2 與 PI/2 弧度之間)。 |
ceil(x) | 對(duì)數(shù)進(jìn)行上舍入。 |
cos(x) | 返回?cái)?shù)的余弦。 |
exp(x) | 返回 Ex 的指數(shù)。 |
floor(x) | 對(duì) x 進(jìn)行下舍入。 |
log(x) | 返回?cái)?shù)的自然對(duì)數(shù)(底為e)。 |
max(x,y,z,…,n) | 返回 x,y,z,…,n 中的最高值。 |
min(x,y,z,…,n) | 返回 x,y,z,…,n中的最低值。 |
pow(x,y) | 返回 x 的 y 次冪。 |
random() | 返回 0 ~ 1 之間的隨機(jī)數(shù)。 |
round(x) | 四舍五入。 |
sin(x) | 返回?cái)?shù)的正弦。 |
sqrt(x) | 返回?cái)?shù)的平方根。 |
tan(x) | 返回角的正切。 |
JavaScript 全局屬性
屬性 | 描述 |
---|---|
Infinity | 代表正的無(wú)窮大的數(shù)值。 |
NaN | 指示某個(gè)值是不是數(shù)字值。 |
undefined | 指示未定義的值。 |
JavaScript 全局函數(shù)
函數(shù) | 描述 |
---|---|
decodeURI() | 解碼某個(gè)編碼的 URI。 |
decodeURIComponent() | 解碼一個(gè)編碼的 URI 組件。 |
encodeURI() | 把字符串編碼為 URI。 |
encodeURIComponent() | 把字符串編碼為 URI 組件。 |
escape() | 對(duì)字符串進(jìn)行編碼。 |
eval() | 計(jì)算 JavaScript 字符串,并把它作為腳本代碼來(lái)執(zhí)行。 |
isFinite() | 檢查某個(gè)值是否為有窮大的數(shù)。 |
isNaN() | 檢查某個(gè)值是否是數(shù)字。 |
Number() | 把對(duì)象的值轉(zhuǎn)換為數(shù)字。 |
parseFloat() | 解析一個(gè)字符串并返回一個(gè)浮點(diǎn)數(shù)。 |
parseInt() | 解析一個(gè)字符串并返回一個(gè)整數(shù)。 |
String() | 把對(duì)象的值轉(zhuǎn)換為字符串。 |
unescape() | 對(duì)由 escape() 編碼的字符串進(jìn)行解碼。 |
2、宿主對(duì)象
宿主對(duì)象就是執(zhí)行JS腳本的環(huán)境提供的對(duì)象,是瀏覽器提供的對(duì)象。所有的BOM和DOM都是宿主對(duì)象。
3、自定義對(duì)象
開(kāi)發(fā)人員自己定義的對(duì)象
⑴對(duì)象字面量方式(通過(guò)JSON來(lái)創(chuàng)建對(duì)象)
缺點(diǎn):使用同一個(gè)接口創(chuàng)建很多對(duì)象,會(huì)產(chǎn)生大量的重復(fù)代碼。
⑵工廠模式。
①工廠模式就是將創(chuàng)建對(duì)象的語(yǔ)句放在一個(gè)函數(shù)里,通過(guò)傳入?yún)?shù)來(lái)創(chuàng)建特定對(duì)象,最后返回創(chuàng)建的對(duì)象。
函數(shù)createPerson()能夠根據(jù)接受到的參數(shù)來(lái)構(gòu)建一個(gè)包含所有必要信息的Person對(duì)象。
可以無(wú)數(shù)次的調(diào)用這個(gè)函數(shù),而每次它都會(huì)返回一個(gè)包含2個(gè)屬性和一個(gè)方法的對(duì)象。
②缺點(diǎn):工廠模式雖然可以創(chuàng)建多個(gè)相似的對(duì)象,但卻不能解決對(duì)象標(biāo)識(shí)的問(wèn)題,即怎樣知道一個(gè)對(duì)象的類型。
⑶構(gòu)造函數(shù)模式
①缺點(diǎn):使用構(gòu)造函數(shù)的主要問(wèn)題是:每個(gè)方法都要在每個(gè)實(shí)例上創(chuàng)建一遍。
②在ECMAScript中,函數(shù)即對(duì)象,因此每定義一個(gè)函數(shù),也就是實(shí)例化了一個(gè)對(duì)象。
③也就是說(shuō)通過(guò)構(gòu)造函數(shù)實(shí)例化的多個(gè)對(duì)象的方法,是多個(gè)不同的方法,但它們內(nèi)部的代碼以及實(shí)現(xiàn)的功能是相同的,這就造成了一定的資源浪費(fèi)。
⑷原型模式
①js中,每個(gè)函數(shù)都有一個(gè)prototype屬性,它是一個(gè)指針,指向一個(gè)對(duì)象,叫做原型對(duì)象。
②使用原型模式可以讓所有的實(shí)例共享原型對(duì)象中的屬性和方法,也就是說(shuō),不必再構(gòu)造函數(shù)中定義對(duì)象實(shí)例的信息。
③缺點(diǎn):省略了為構(gòu)造函數(shù)傳遞初始化參數(shù)這一環(huán)節(jié),結(jié)果所有實(shí)例在默認(rèn)情況下都將取得相同的屬性值。
原型模式的最大問(wèn)題是由共享的本性所導(dǎo)致的。原型中所有屬性是被很多實(shí)例共享的
這種共享對(duì)于函數(shù)非常合適。對(duì)于包含引用類型的屬性來(lái)說(shuō),問(wèn)題就比較突出了。
④因此,很少單獨(dú)使用原型模式。
⑸組合使用構(gòu)造函數(shù)模式和原型模式
①組合使用構(gòu)造函數(shù)模式和原型模式,是創(chuàng)建自定義類型的最常見(jiàn)方式。
②構(gòu)造函數(shù)模式用于定義實(shí)例屬性,而原型模式用于定義方法和共享的屬性。
③結(jié)果,每個(gè)實(shí)例都會(huì)有自己的一份實(shí)例屬性的副本,但同時(shí)又共享著對(duì)方法的引用,最大限度的節(jié)省了內(nèi)存。
⑹其他模式
①動(dòng)態(tài)原型模式:僅在第一次調(diào)用構(gòu)造函數(shù)時(shí),將方法賦給原型對(duì)象的相應(yīng)屬性,其他示例的處理方式同構(gòu)造函數(shù)模式
②寄生構(gòu)造函數(shù)模式:僅僅封裝創(chuàng)建對(duì)象的代碼,然后再返回新創(chuàng)建的對(duì)象,仍使用new操作符調(diào)用
③穩(wěn)妥構(gòu)造函數(shù)模式:沒(méi)有公共屬性,只有私有變量和方法,以及一些get/set方法,用以處理私有變量。
【