JavaScript內(nèi)置對(duì)象
內(nèi)置對(duì)象的定義是:“由ECMAScript實(shí)現(xiàn)提供的、不依賴宿主環(huán)境的對(duì)象,這些對(duì)象在ECMAScript程序執(zhí)行之前就已經(jīng)存在了?!盓CMA-262只定義了兩個(gè)內(nèi)置對(duì)象:Global和Math。
Global對(duì)象
Global(全局)對(duì)象是ECMAScript中一個(gè)特別的對(duì)象,因?yàn)檫@個(gè)對(duì)象是不存在的。在ECMAScript中不屬于任何其他對(duì)象的屬性和方法,都屬于它的屬性和方法。所以,事實(shí)上,并不存在全局變量和全局函數(shù);所有在全局作用域定義的變量和函數(shù),都是Global對(duì)象的屬性和方法。
內(nèi)置的屬性和方法:
URI編碼方法
URI編碼可以對(duì)鏈接進(jìn)行編碼,以便發(fā)送給瀏覽器。它們采用特殊的UTF-8編碼替換所有無(wú)效字符,從而讓瀏覽器能夠接受和理解。
encodeURI()不會(huì)對(duì)本身屬于URI的特殊字符進(jìn)行編碼,例如冒號(hào)、正斜杠、問(wèn)號(hào)和#號(hào);而encodeURIComponent()則會(huì)對(duì)它發(fā)現(xiàn)的任何非標(biāo)準(zhǔn)字符進(jìn)行編碼
var b = '//Test王';
alert(encodeURI(b)); //只編碼了中文
var b = '//Test王';
alert(encodeURIComponent(b)); //特殊字符和中文編碼了
一般來(lái)說(shuō)encodeURIComponent()使用頻率要高一些。
使用了URI編碼過(guò)后,還可以進(jìn)行解碼,通過(guò)decodeURI()和decodeURIComponent()來(lái)進(jìn)行解碼
var b = '//Test王';
alert(decodeURI(encodeURI(b))); //還原
var b = '//Test王';
alert(decodeURIComponent(encodeURIComponent(b))); //還原
eval()方法
eval()方法主要擔(dān)當(dāng)一個(gè)字符串解析器的作用,他只接受一個(gè)參數(shù),而這個(gè)參數(shù)就是要執(zhí)行的JavaScript代碼的字符串。
eval('var b = 100'); //解析了字符串代碼
alert(b);
eval('alert(100)');
eval('function b() {return 123}'); //函數(shù)也可以
alert(b());
eval()方法的功能非常強(qiáng)大,但也非常危險(xiǎn)。因此使用的時(shí)候必須極為謹(jǐn)慎。特別是在用戶輸入數(shù)據(jù)的情況下,非常有可能導(dǎo)致程序的安全性,比如代碼注入等等。
Global對(duì)象屬性
Global對(duì)象包含了一些屬性:undefined、NaN、Object、Array、Function等等。
alert(Array); //返回構(gòu)造函數(shù)
window對(duì)象
Web瀏覽器可以使用window對(duì)象來(lái)實(shí)現(xiàn)一全局訪問(wèn)。
alert(window.Array);
Math對(duì)象
ECMAScript還為保存數(shù)學(xué)公式和信息提供了一個(gè)對(duì)象,即Math對(duì)象。
Math對(duì)象的屬性
Math對(duì)象包含的屬性大都是數(shù)學(xué)計(jì)算中可能會(huì)用到的一些特殊值。
屬 性
說(shuō) 明
Math.E
自然對(duì)數(shù)的底數(shù),即常量e的值
Math.LN10
10的自然對(duì)數(shù)
Math.LN2
2的自然對(duì)數(shù)
Math.LOG2E
以2為底e的對(duì)數(shù)
Math.LOG10E
以10為底e的對(duì)數(shù)
Math.PI
∏的值
Math.SQRT1_2
1/2的平方根
Math.SQRT2
2的平方根
alert(Math.E); //
alert(Math.LN10);
alert(Math.LN2);
alert(Math.LOG2E);
alert(Math.LOG10E);
alert(Math.PI);
alert(Math.SQRT1_2);
alert(Math.SQRT2); //
min()和max()方法
Math.min()用于確定一組數(shù)值中的最小值。Math.max()用于確定一組數(shù)值中的最大值。
alert(Math.min(21,14,31,16,43,85,70,19,36)); //最小值
alert(Math.max(41,17,82,30,11,29,26,10,37,25)); //最大值
舍入方法
Math.ceil()執(zhí)行向上舍入,即它總是將數(shù)值向上舍入為最接近的整數(shù);
Math.floor()執(zhí)行向下舍入,即它總是將數(shù)值向下舍入為最接近的整數(shù);
Math.round()執(zhí)行標(biāo)準(zhǔn)舍入,即它總是將數(shù)值四舍五入為最接近的整數(shù);
alert(Math.ceil(25.9)); //26
alert(Math.ceil(25.5)); //26
alert(Math.ceil(25.1)); //26
alert(Math.floor(25.9)); //25
alert(Math.floor(25.5)); //25
alert(Math.floor(25.1)); //25
alert(Math.round(25.9)); //26
alert(Math.round(25.5)); //26
alert(Math.round(25.1)); //25
random()方法
Math.random()方法返回介于0到1之間一個(gè)隨機(jī)數(shù),不包括0和1。如果想大于這個(gè)范圍的話,可以套用一下公式:
值 = Math.floor(Math.random() * 總數(shù) + 第一個(gè)值)
alert(Math.floor(Math.random() * 10 + 1)); //隨機(jī)產(chǎn)生1-10之間的任意數(shù)
for (var i = 0; i<10;i ++) {
document.write(Math.floor(Math.random() * 10 + 5)); //5-14之間的任意數(shù)
document.write('<br />');
}