1. 什么是對(duì)象
JavaScript 中的所有事物都是對(duì)象舵稠,如:字符串超升、數(shù)值、數(shù)組哺徊、函數(shù)等室琢,每個(gè)對(duì)象帶有屬性和方法。
對(duì)象的屬性:反映該對(duì)象某些特定的性質(zhì)的唉工,如:字符串的長(zhǎng)度研乒、圖像的長(zhǎng)寬等;
對(duì)象的方法:能夠在對(duì)象上執(zhí)行的動(dòng)作淋硝。例如雹熬,表單的“提交”(Submit),時(shí)間的“獲取”(getYear)等谣膳;
JavaScript 提供多個(gè)內(nèi)建對(duì)象竿报,比如 String、Date继谚、Array 等等烈菌,使用對(duì)象前先定義,如下使用數(shù)組對(duì)象:
var objectName =new Array();//使用new關(guān)鍵字定義對(duì)象
或者
var objectName =[];
訪問(wèn)對(duì)象屬性的語(yǔ)法:
objectName.propertyName
如使用 Array 對(duì)象的 length 屬性來(lái)獲得數(shù)組的長(zhǎng)度:
var myarray=new Array(6);//定義數(shù)組對(duì)象
var myl=myarray.length;//訪問(wèn)數(shù)組長(zhǎng)度length屬性
以上代碼執(zhí)行后花履,myl的值將是:6
訪問(wèn)對(duì)象的方法:
objectName.methodName()
如使用string 對(duì)象的 toUpperCase() 方法來(lái)將文本轉(zhuǎn)換為大寫:
var mystr="Hello world!";//創(chuàng)建一個(gè)字符串
var request=mystr.toUpperCase(); //使用字符串對(duì)象方法
以上代碼執(zhí)行后芽世,request的值是:HELLO WORLD!
1.2 日期對(duì)象可以儲(chǔ)存任意一個(gè)日期,并且可以精確到毫秒數(shù)(1/1000 秒)诡壁。
定義一個(gè)時(shí)間對(duì)象 :
var Udate=new Date();
注意****:使用關(guān)鍵字new济瓢,Date()的首字母必須大寫。
使 Udate 成為日期對(duì)象妹卿,并且已有初始值:當(dāng)前時(shí)間(當(dāng)前電腦系統(tǒng)時(shí)間)旺矾。
如果要自定義初始值蔑鹦,可以用以下方法:
var d = new Date(2012, 10, 1); //2012年10月1日
var d = new Date('Oct 1, 2012'); //2012年10月1日
我們最好使用下面介紹的“方法”來(lái)嚴(yán)格定義時(shí)間。
訪問(wèn)方法語(yǔ)法:“<日期對(duì)象>.<方法>”
Date對(duì)象中處理時(shí)間和日期的常用方法:
1.3 返回/設(shè)置年份方法
get/setFullYear() 返回/設(shè)置年份箕宙,用四位數(shù)表示嚎朽。
var mydate=new Date();//當(dāng)前時(shí)間2014年3月6日
document.write(mydate+"<br>");//輸出當(dāng)前時(shí)間
document.write(mydate.getFullYear()+"<br>");//輸出當(dāng)前年份
mydate.setFullYear(81); //設(shè)置年份
document.write(mydate+"<br>"); //輸出年份被設(shè)定為 0081年。
注意:不同瀏覽器柬帕, mydate.setFullYear(81)結(jié)果不同哟忍,年份被設(shè)定為 0081或81兩種情況。
結(jié)果:
Thu Mar 06 2014 10:57:47 GMT+0800
2014
Thu Mar 06 0081 10:57:47 GMT+0800
注意:
1.結(jié)果格式依次為:星期雕崩、月魁索、日、年盼铁、時(shí)粗蔚、分侠鳄、秒酗捌、時(shí)區(qū)。(火狐瀏覽器)
- 不同瀏覽器枢纠,時(shí)間格式有差異肤寝。
1.4返回星期方法
getDay() 返回星期当辐,返回的是0-6的數(shù)字,0 表示星期天鲤看。如果要返回相對(duì)應(yīng)“星期”缘揪,通過(guò)數(shù)組完成,代碼如下:
<script type="text/javascript">
var mydate=new Date();//定義日期對(duì)象
var weekday=["星期日","星期一","星期二","星期三","星期四","星期五","星期六"];
//定義數(shù)組對(duì)象,給每個(gè)數(shù)組項(xiàng)賦值
var mynum=mydate.getDay();//返回值存儲(chǔ)在變量mynum中
document.write(mydate.getDay());//輸出getDay()獲取值
document.write("今天是:"+ weekday[mynum]);//輸出星期幾
</script>
注意:以上代碼是在2014年3月7日义桂,星期五運(yùn)行找筝。
結(jié)果:
5
今天是:星期五
1.5 et/setTime() 返回/設(shè)置時(shí)間,單位毫秒數(shù)慷吊,計(jì)算從 1970 年 1 月 1 日零時(shí)到日期對(duì)象所指的日期的毫秒數(shù)袖裕。
如果將目前日期對(duì)象的時(shí)間推遲1小時(shí),代碼如下:
<script type="text/javascript">
var mydate=new Date();
document.write("當(dāng)前時(shí)間:"+mydate+"<br>");
mydate.setTime(mydate.getTime() + 60 * 60 * 1000);
document.write("推遲一小時(shí)時(shí)間:" + mydate);
</script>
結(jié)果:
當(dāng)前時(shí)間:Thu Mar 6 11:46:27 UTC+0800 2014
推遲一小時(shí)時(shí)間:Thu Mar 6 12:46:27 UTC+0800 2014
注意:1. 一小時(shí) 60 分溉瓶,一分 60 秒急鳄,一秒 1000 毫秒
2. 時(shí)間推遲 1 小時(shí),就是: “x.setTime(x.getTime() + 60 * 60 * 1000);”
1.6 在之前的學(xué)習(xí)中已經(jīng)使用字符串對(duì)象了,定義字符串的方法就是直接賦值堰酿。比如:
var mystr = "I love JavaScript!"
定義mystr字符串后疾宏,我們就可以訪問(wèn)它的屬性和方法。
訪問(wèn)字符串對(duì)象的屬性length:
//stringObject.length; 返回該字符串的長(zhǎng)度触创。
var mystr="Hello World!";
var myl=mystr.length;
以上代碼執(zhí)行后灾锯,myl 的值將是:12
訪問(wèn)字符串對(duì)象的方法:
//使用 String 對(duì)象的 toUpperCase() 方法來(lái)將字符串小寫字母轉(zhuǎn)換為大寫:
var mystr="Hello world!";
var mynum=mystr.toUpperCase();
//oLowerCase()方法,將字符串所有大寫字母都變成小寫的字符串嗅榕。
以上代碼執(zhí)行后顺饮,mynum 的值是:HELLO WORLD!
1.7 返回指定位置的字符
charAt() 方法可返回指定位置的字符。返回的字符是長(zhǎng)度為 1 的字符串凌那。
語(yǔ)法:
stringObject.charAt(index)
2.如果參數(shù) index 不在 0 與 string.length-1 之間帽蝶,該方法將返回一個(gè)空字符串赦肋。
如:在字符串 "I love JavaScript!" 中,返回位置2的字符:
<script type="text/javascript">
var mystr="I love JavaScript!"
document.write(mystr.charAt(2));
</script>
注意:一個(gè)空格也算一個(gè)字符励稳。
以上代碼的運(yùn)行結(jié)果:
l
1.8 返回指定的字符串首次出現(xiàn)的位置
indexOf() 方法可返回某個(gè)指定的字符串值在字符串中首次出現(xiàn)的位置佃乘。
語(yǔ)法
stringObject.indexOf(substring, startpos)
說(shuō)明:
1.該方法將從頭到尾地檢索字符串 stringObject,看它是否含有子串 substring驹尼。
2.可選參數(shù)趣避,從stringObject的startpos位置開(kāi)始查找substring,如果沒(méi)有此參數(shù)將從stringObject的開(kāi)始位置查找新翎。
3.如果找到一個(gè) substring程帕,則返回 substring 的第一次出現(xiàn)的位置。stringObject 中的字符位置是從 0 開(kāi)始的地啰。
注意:
1.indexOf() 方法區(qū)分大小寫愁拭。
2.如果要檢索的字符串值沒(méi)有出現(xiàn),則該方法返回 -1亏吝。
例如: 對(duì) "I love JavaScript!" 字符串內(nèi)進(jìn)行不同的檢索:
<script type="text/javascript">
var str="I love JavaScript!"
document.write(str.indexOf("I") + "<br />");
document.write(str.indexOf("v") + "<br />");
document.write(str.indexOf("v",8));
</script>
//以上代碼的輸出:0 4 9
1.9 字符串分割split()
知識(shí)講解:
split() 方法將字符串分割為字符串?dāng)?shù)組岭埠,并返回此數(shù)組。
語(yǔ)法:
stringObject.split(separator,limit)
注意:
如果把空字符串 ("") 用作 separator蔚鸥,那么 stringObject 中的每個(gè)字符之間都會(huì)被分割惜论。
我們將按照不同的方式來(lái)分割字符串:
使用指定符號(hào)分割字符串,代碼如下:
var mystr = "www.imooc.com";
document.write(mystr.split(".")+"<br>");
document.write(mystr.split(".", 2)+"<br>");
//運(yùn)行結(jié)果:www,imooc,comwww,imooc
將字符串分割為字符株茶,代碼如下:
document.write(mystr.split("")+"<br>");
document.write(mystr.split("", 5));
//運(yùn)行結(jié)果:w,w,w,.,i,m,o,o,c,.,c,o,mw,w,w,.,i
1.10 提取字符串substring()
substring() 方法用于提取字符串中介于兩個(gè)指定下標(biāo)之間的字符来涨。
語(yǔ)法:
stringObject.substring(startPos,stopPos)
參數(shù)說(shuō)明:
注意:
- 返回的內(nèi)容是從 start開(kāi)始(包含start位置的字符)到 stop-1 處的所有字符,其長(zhǎng)度為 stop 減start启盛。
- 如果參數(shù) start 與 stop 相等蹦掐,那么該方法返回的就是一個(gè)空串(即長(zhǎng)度為 0 的字符串)。
- 如果 start 比 stop 大僵闯,那么該方法在提取子串之前會(huì)先交換這兩個(gè)參數(shù)卧抗。
使用 substring() 從字符串中提取字符串,代碼如下:
<script type="text/javascript">
var mystr="I love JavaScript";
document.write(mystr.substring(7));
document.write(mystr.substring(2,6));
</script>
運(yùn)行結(jié)果:JavaScript love
1.11 提取指定數(shù)目的字符substr()
substr() 方法從字符串中提取從 startPos位置開(kāi)始的指定數(shù)目的字符串鳖粟。
語(yǔ)法:
stringObject.substr(startPos,length)
注意:
如果參數(shù)startPos是負(fù)數(shù)社裆,從字符串的尾部開(kāi)始算起的位置。也就是說(shuō)向图,-1 指字符串中最后一個(gè)字符泳秀,-2 指倒數(shù)第二個(gè)字符标沪,以此類推。
如果startPos為負(fù)數(shù)且絕對(duì)值大于字符串長(zhǎng)度嗜傅,startPos為0金句。
使用 substr() 從字符串中提取一些字符,代碼如下:
<script type="text/javascript">
var mystr="I love JavaScript!";
document.write(mystr.substr(7));
document.write(mystr.substr(2,4));
</script>
運(yùn)行結(jié)果:
JavaScript!
love
1.12Math對(duì)象
Math對(duì)象吕嘀,提供對(duì)數(shù)據(jù)的數(shù)學(xué)計(jì)算违寞。
使用 Math 的屬性和方法,代碼如下:
<script type="text/javascript">
var mypi=Math.PI;
var myabs=Math.abs(-15);
document.write(mypi);
document.write(myabs);
</script>
運(yùn)行結(jié)果:
3.14159265358979315
注意:Math 對(duì)象是一個(gè)固有的對(duì)象偶房,無(wú)需創(chuàng)建它趁曼,直接把 Math 作為對(duì)象使用就可以調(diào)用其所有屬性和方法。這是它與Date,String對(duì)象的區(qū)別棕洋。
Math 對(duì)象屬性
1.13 向上取整ceil()
ceil() 方法可對(duì)一個(gè)數(shù)進(jìn)行向上取整挡闰。
語(yǔ)法:
Math.ceil(x)
注意:它返回的是大于或等于x,并且與x最接近的整數(shù)拍冠。
我們將把 ceil() 方法運(yùn)用到不同的數(shù)字上尿这,代碼如下:
<script type="text/javascript">
document.write(Math.ceil(0.8) + "<br />")
document.write(Math.ceil(6.3) + "<br />")
document.write(Math.ceil(5) + "<br />")
document.write(Math.ceil(3.5) + "<br />")
document.write(Math.ceil(-5.1) + "<br />")
document.write(Math.ceil(-5.9))
</script>
運(yùn)行結(jié)果:
1 7 5 4 -5 -5
1.14向下取整floor()
floor() 方法可對(duì)一個(gè)數(shù)進(jìn)行向下取整。
語(yǔ)法:
Math.floor(x)
注意:返回的是小于或等于x庆杜,并且與 x 最接近的整數(shù)射众。
我們將在不同的數(shù)字上使用 floor() 方法,代碼如下:
<script type="text/javascript">
document.write(Math.floor(0.8)+ "<br>");
document.write(Math.floor(6.3)+ "<br>");
document.write(Math.floor(5)+ "<br>");
document.write(Math.floor(3.5)+ "<br>");
document.write(Math.floor(-5.1)+ "<br>");
document.write(Math.floor(-5.9));
</script>
運(yùn)行結(jié)果:
0 6 5 3 -6 -6
1.14四舍五入round()
round() 方法可把一個(gè)數(shù)字四舍五入為最接近的整數(shù)晃财。
語(yǔ)法:
Math.round(x)
參數(shù)說(shuō)明:
注意:
- 返回與 x 最接近的整數(shù)叨橱。
- 對(duì)于 0.5,該方法將進(jìn)行上舍入断盛。(5.5 將舍入為 6)
- 如果 x 與兩側(cè)整數(shù)同等接近罗洗,則結(jié)果接近 +∞方向的數(shù)字值 。(如 -5.5 將舍入為 -5; -5.52 將舍入為 -6),如下圖:
把不同的數(shù)舍入為最接近的整數(shù),代碼如下:
<script type="text/javascript">
document.write(Math.round(1.6)+ "<br>");
document.write(Math.round(2.5)+ "<br>");
document.write(Math.round(0.49)+ "<br>");
document.write(Math.round(-6.4)+ "<br>");
document.write(Math.round(-6.6));
</script>
運(yùn)行結(jié)果:
2 3 0 -6 -7
1.16隨機(jī)數(shù) random()
random() 方法可返回介于 0 ~ 1(大于或等于 0 但小于 1 )之間的一個(gè)隨機(jī)數(shù)钢猛。
語(yǔ)法:
Math.random();
注意:返回一個(gè)大于或等于 0 但小于 1 的符號(hào)為正的數(shù)字值伙菜。
我們?nèi)〉媒橛?0 到 1 之間的一個(gè)隨機(jī)數(shù),代碼如下:
<script type="text/javascript">
document.write(Math.random());
</script>
//運(yùn)行結(jié)果:0.190305486195328
注意:因?yàn)槭请S機(jī)數(shù)命迈,所以每次運(yùn)行結(jié)果不一樣贩绕,但是0 ~ 1的數(shù)值。
獲得0 ~ 10之間的隨機(jī)數(shù)壶愤,代碼如下:
<script type="text/javascript">
document.write((Math.random())*10);
</script>
//運(yùn)行結(jié)果:8.72153625893887
1.17Array 數(shù)組對(duì)象
數(shù)組對(duì)象是一個(gè)對(duì)象的集合淑倾,里邊的對(duì)象可以是不同類型的。數(shù)組的每一個(gè)成員對(duì)象都有一個(gè)“下標(biāo)”征椒,用來(lái)表示它在數(shù)組中的位置娇哆,是從零開(kāi)始的
數(shù)組定義的方法:
- 定義了一個(gè)空數(shù)組:
var 數(shù)組名= new Array(); - 定義時(shí)指定有n個(gè)空元素的數(shù)組:
var 數(shù)組名 =new Array(n);
3.定義數(shù)組的時(shí)候,直接初始化數(shù)據(jù):
var 數(shù)組名 = [<元素1>, <元素2>, <元素3>...];
我們定義myArray數(shù)組,并賦值碍讨,代碼如下:
var myArray = [2, 8, 6];
說(shuō)明:定義了一個(gè)數(shù)組 myArray治力,里邊的元素是:myArray[0] = 2; myArray[1] = 8; myArray[2] = 6。
數(shù)組元素使用:
數(shù)組名[下標(biāo)] = 值;
注意: 數(shù)組的下標(biāo)用方括號(hào)括起來(lái)垄开,從0開(kāi)始琴许。
數(shù)組屬性:
length 用法:<數(shù)組對(duì)象>.length;返回:數(shù)組的長(zhǎng)度溉躲,即數(shù)組里有多少個(gè)元素。它等于數(shù)組里最后一個(gè)元素的下標(biāo)加一益兄。
1.18 數(shù)組連接concat()
concat() 方法用于連接兩個(gè)或多個(gè)數(shù)組锻梳。此方法返回一個(gè)新數(shù)組,不改變?cè)瓉?lái)的數(shù)組净捅。
語(yǔ)法
arrayObject.concat(array1,array2,...,arrayN)
參數(shù)說(shuō)明:
注意: 該方法不會(huì)改變現(xiàn)有的數(shù)組疑枯,而僅僅會(huì)返回被連接數(shù)組的一個(gè)副本。
我們創(chuàng)建一個(gè)數(shù)組蛔六,將把 concat() 中的參數(shù)連接到數(shù)組 myarr 中荆永,代碼如下:
<script type="text/javascript">
var mya = new Array(3);
mya[0] = "1";
mya[1] = "2";
mya[2] = "3";
document.write(mya.concat(4,5)+"<br>");
document.write(mya);
</script>
/*運(yùn)行結(jié)果:
1,2,3,4,5
1,2,3*/
我們創(chuàng)建了三個(gè)數(shù)組,然后使用 concat() 把它們連接起來(lái)国章,代碼如下:
<script type="text/javascript">
var mya1= new Array("hello!")
var mya2= new Array("I","love");
var mya3= new Array("JavaScript","!");
var mya4=mya1.concat(mya2,mya3);
document.write(mya4);
</script>
運(yùn)行結(jié)果:
hello!,I,love,JavaScript,!
1.19指定分隔符連接數(shù)組元素join()
join()方法用于把數(shù)組中的所有元素放入一個(gè)字符串具钥。元素是通過(guò)指定的分隔符進(jìn)行分隔的。
語(yǔ)法:
arrayObject.join(分隔符)
參數(shù)說(shuō)明:
注意:返回一個(gè)字符串液兽,該字符串把數(shù)組中的各個(gè)元素串起來(lái)骂删,用<分隔符>置于元素與元素之間。這個(gè)方法不影響數(shù)組原本的內(nèi)容四啰。 我們使用join()方法宁玫,將數(shù)組的所有元素放入一個(gè)字符串中,代碼如下:
<script type="text/javascript">
var myarr = new Array(3);
myarr[0] = "I";
myarr[1] = "love";
myarr[2] = "JavaScript";
document.write(myarr.join());
</script>
運(yùn)行結(jié)果:
I,love,JavaScript
我們將使用分隔符來(lái)分隔數(shù)組中的元素柑晒,代碼如下:
<script type="text/javascript">
var myarr = new Array(3)
myarr[0] = "I";
myarr[1] = "love";
myarr[2] = "JavaScript";
document.write(myarr.join("."));
</script>
運(yùn)行結(jié)果:
I.love.JavaScript
1.20顛倒數(shù)組元素順序reverse()
reverse() 方法用于顛倒數(shù)組中元素的順序欧瘪。
語(yǔ)法:
arrayObject.reverse()
注意:該方法會(huì)改變?cè)瓉?lái)的數(shù)組,而不會(huì)創(chuàng)建新的數(shù)組匙赞。
定義數(shù)組myarr并賦值佛掖,然后顛倒其元素的順序:
<script type="text/javascript">
var myarr = new Array(3)
myarr[0] = "1"
myarr[1] = "2"
myarr[2] = "3"
document.write(myarr + "<br />")
document.write(myarr.reverse())
</script>
/*運(yùn)行結(jié)果:
1,2,3
3,2,1*/
1.21 選定元素slice()
slice() 方法可從已有的數(shù)組中返回選定的元素。
語(yǔ)法
arrayObject.slice(start,end)
1.返回一個(gè)新的數(shù)組罚屋,包含從 start 到 end (不包括該元素)的 arrayObject 中的元素苦囱。
2. 該方法并不會(huì)修改數(shù)組,而是返回一個(gè)子數(shù)組脾猛。
注意:
- 可使用負(fù)值從數(shù)組的尾部選取元素撕彤。
2.如果 end 未被規(guī)定,那么 slice() 方法會(huì)選取從 start 到數(shù)組結(jié)尾的所有元素。 - String.slice() 與 Array.slice() 相似羹铅。
我們將創(chuàng)建一個(gè)新數(shù)組蚀狰,然后從其中選取的元素,代碼如下:
<script type="text/javascript">
var myarr = new Array(1,2,3,4,5,6);
document.write(myarr + "<br>");
document.write(myarr.slice(2,4) + "<br>");
document.write(myarr);
</script>
/*運(yùn)行結(jié)果:
1,2,3,4,5,6
3,4
1,2,3,4,5,6
*/
1.22 數(shù)組排序sort()
sort()方法使數(shù)組中的元素按照一定的順序排列职员。
語(yǔ)法:
arrayObject.sort(方法函數(shù))
參數(shù)說(shuō)明:
1.如果不指定<方法函數(shù)>麻蹋,則按unicode碼順序排列。
2.如果指定<方法函數(shù)>焊切,則按<方法函數(shù)>所指定的排序方法排序扮授。
myArray.sort(sortMethod);
注意: 該函數(shù)要比較兩個(gè)值,然后返回一個(gè)用于說(shuō)明這兩個(gè)值的相對(duì)順序的數(shù)字专肪。比較函數(shù)應(yīng)該具有兩個(gè)參數(shù) a 和 b刹勃,其返回值如下:
若返回值<=-1,則表示 A 在排序后的序列中出現(xiàn)在 B 之前嚎尤。 若返回值>-1 && <1荔仁,則表示 A 和 B 具有相同的排序順序。 若返回值>=1芽死,則表示 A 在排序后的序列中出現(xiàn)在 B 之后乏梁。
1.使用sort()將數(shù)組進(jìn)行排序,代碼如下:
<script type="text/javascript">
var myarr1 = new Array("Hello","John","love","JavaScript");
var myarr2 = new Array("80","16","50","6","100","1"); document.write(myarr1.sort()+"<br>");
document.write(myarr2.sort());
</script>
/*運(yùn)行結(jié)果:
Hello,JavaScript,John,love
1,100,16,50,6,80*/
注意:上面的代碼沒(méi)有按照數(shù)值的大小對(duì)數(shù)字進(jìn)行排序关贵。
2.如要實(shí)現(xiàn)這一點(diǎn)遇骑,就必須使用一個(gè)排序函數(shù),代碼如下:
<script type="text/javascript">
function sortNum(a,b) {
return a - b; //升序坪哄,如降序质蕉,把“a - b”該成“b - a”
}
var myarr = new Array("80","16","50","6","100","1");
document.write(myarr + "<br>");
document.write(myarr.sort(sortNum));
</script>
/*運(yùn)行結(jié)果:
80,16,50,6,100,1
1,6,16,50,80,100
*/