從傳統意義上來講,ECMAScript 並不真正具備類。事實上,除了說明不存在類,在 ECMA-262 中根本沒有出現「類」這個詞。ECMAScript 定義了「對象定義」,邏輯上等價於其餘程序設計語言中的類。javascript
var o = new Object();
ToString() : 返回對象的原始字符串表示。 ValueOf() : 返回最適合該對象的原始值。對於許多對象,該方法返回的值都與 ToString() 的返回值相同。
包括:Array ,String , Date, Math, Boolean, Number Function, Global, Error, RegExp , Objecthtml
簡介:java
在JavaScript中除了null和undefined之外其餘的數據類型都被定義成了對象,也能夠用建立對象的方法定義變量,String、Math、Array、Date、RegExp都是JavaScript中重要的內置對象,在JavaScript程序大多數功能都是經過對象實現的正則表達式
<script language="javascript"> var aa=Number.MAX_VALUE; //利用數字對象獲取可表示最大數 var bb=new String("hello JavaScript"); //建立字符串對象 var cc=new Date(); //建立日期對象 var dd=new Array("星期一","星期二","星期三","星期四"); //數組對象 </script>
var str1="hello world"; alert(str1.length); alert(str1.substr(1,5));
調用字符串的對象屬性或方法時自動建立對象,用完就丟棄數組
<script> var str1 = new String("hello world"); alert(str1.length); alert(str1.substr(1,7)) </script>
採用new建立字符串對象str1,全局有效,結果以下;dom
獲取字符串長度 length var str1="String對象"; var str2=""; alert("str1長度 "+str1.length); alert("str2長度 "+str2.length);
var str1="AbcdEfgh"; var str2=str1.toLowerCase(); var str3=str1.toUpperCase(); alert(str2); //結果爲"abcdefgh" alert(str3); //結果爲"ABCDEFGH"
書寫格式 x.charAt(index) x.charCodeAt(index) 使用註解 x表明字符串對象 index表明字符位置 index從0開始編號 charAt返回index位置的字符 charCodeAt返回index位置的Unicode編碼 ---------------------- var str1="welcome to the world of JS! 戰爭熱誠"; var str2=str1.charAt(28); var str3=str1.charCodeAt(28); alert(str2); console.log(str2); //結果爲"戰" console.log(str3); //結果爲25112
//書寫格式 // //x.indexOf(findstr,index) //x.lastIndexOf(findstr) //------------------------------------- var str1="welcome to the world of JS!"; var str2=str1.indexOf("l"); var str3=str1.lastIndexOf("l"); alert(str2); //結果爲2 alert(str3); //結果爲18 //-------*********************************************************------- //書寫格式 // //x.match(regexp) // //x.search(regexp) // //使用註解 // //x表明字符串對象 // //regexp表明正則表達式或字符串 // //match返回匹配字符串的數組,若是沒有匹配則返回null // //search返回匹配字符串的首字符位置索引 //------------------------------------- var str1="welcome to the world of JS!"; var str2=str1.match("world"); var str3=str1.search("world"); alert(str2[0]); //結果爲"world" alert(str3); //結果爲15
//截取子字符串 // //書寫格式 // //x.substr(start, length) // //x.substring(start, end) // //使用註解 // //x表明字符串對象 // //start表示開始位置 // //length表示截取長度 // //end是結束位置加1 // //第一個字符位置爲0 var str1="abcdefgh"; var str2=str1.substr(2,4); var str3=str1.substring(2,4); alert(str2); //結果爲"cdef" alert(str3); //結果爲"cd" //-------*********************************************************------- //x.slice(start, end) var str1="abcdefgh"; var str2=str1.slice(2,4); var str3=str1.slice(4); var str4=str1.slice(2,-1); var str5=str1.slice(-3,-1); alert(str2); //結果爲"cd" alert(str3); //結果爲"efgh" alert(str4); //結果爲"cdefg" alert(str5); //結果爲"fg"
替換字符串學習
//x.replace(findstr,tostr) var str1="abcdefgh"; var str2=str1.replace("cd","aaa"); alert(str2); //結果爲"abaaaefgh"
分割字符串測試
var str1="一,二,三,四,五,六,日"; var strArray=str1.split(","); alert(strArray[1]); //結果爲"二"
鏈接字符串ui
//y=x.concat(addstr) // //使用註解 // //x表明字符串對象 //addstr爲添加字符串 //返回x+addstr字符串 var str1="abcd"; var str2=str1.concat("efgh"); alert(str2); //結果爲"abcdefgh"
Array 對象用於在單個的變量中存儲多個值。 語法: 建立方式1: var a=[1,2,3]; 建立方式2: new Array(); // 建立數組時容許指定元素個數也能夠不指定元素個數。 new Array(size);//if 1個參數且爲數字,即表明size,not content 初始化數組對象: var cnweek=new Array(7); cnweek[0]="星期日"; cnweek[1]="星期一"; ... cnweek[6]="星期六"; new Array(element0, element1, ..., elementn)//也能夠直接在創建對象時初始化數組元素,元素類型容許不一樣 var test=new Array(100,"a",true);
練習:編碼
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script>
// 建立方法一
var arr = [1,2,3,6];
// 建立方法二
var arr2 = new Array((1,2,3,4));
console.log(arr.length)
console.log(arr2.length)
</script>
</body>
</html>
結果:
var cnweek=new Array(7); for (var i=0;i<=6;i++){ cnweek[i]=new Array(2); } cnweek[0][0]="星期日"; cnweek[0][1]="Sunday"; cnweek[1][0]="星期一"; cnweek[1][1]="Monday"; ... cnweek[6][0]="星期六"; cnweek[6][1]="Saturday";
練習:
<!doctype html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <script> var arr = new Array(5,"hello",true,[1,4]); console.log(arr[3][1]); // 建立二維數組 方法一 數組裏面套數組 var arr2= new Array([1,2,3],[1,2,4]) console.log(arr2) console.log(arr2.length) </script> </body> </html>
獲取數組元素的個數:length
var cnweek=new Array(7); cnweek[0]="星期日"; cnweek[1]="星期一"; cnweek[2]="星期二"; cnweek[3]="星期三"; cnweek[4]="星期四"; cnweek[5]="星期五"; cnweek[6]="星期六"; for (var i=0;i<cnweek.length;i++){ document.write(cnweek[i]+" | "); }
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script>
// 建立方法一
var arr = [1,2,3,6];
// 建立方法二
var arr2 = new Array((1,2,3,4));
console.log(arr.length);
console.log(arr2.length);
var arr3 = new Array();
var arr4 = new Array(4);
// 若是採用初始化對象方式建立數組,若是裏面只有一個值並且是一個數字
// 那麼數組表示的是長度而不是內容
console.log(arr3)
console.log(arr4)
console.log(arr4[0])
console.log(arr4[1])
console.log(arr4[2])
console.log(arr4[3])
console.log(arr4[4])
// 數組是可變長的
arr4[5] = 10
console.log(arr4)
console.log(arr4.length)
</script>
</body>
</html>
結果:
//書寫格式 //x.join(bystr) //使用註解 // //x表明數組對象 //bystr做爲鏈接數組中元素的字符串 //返回鏈接後的字符串 //與字符串的split功能恰好相反 var arr1=[1, 2, 3, 4, 5, 6, 7]; var str1=arr1.join("-"); alert(str1); //結果爲"1-2-3-4-5-6-7"
//鏈接數組-concat方法 // //x.concat(value,...) var a = [1,2,3]; var a = new Array(1,2,3); var b=a.concat(4,5) ; alert(a.toString()); //返回結果爲1,2,3 alert(b.toString()); //返回結果爲1,2,3,4,
//x.reverse() //x.sort() var arr1=[32, 12, 111, 444]; //var arr1=["a","d","f","c"]; arr1.reverse(); //顛倒數組元素 alert(arr1.toString()); //結果爲444,111,12,32 arr1.sort(); //排序數組元素 alert(arr1.toString()); //結果爲111,12,32,444 //------------------------------ arr=[1,5,2,100]; //arr.sort(); //alert(arr); //若是就想按着數字比較呢? function intSort(a,b){ if (a>b){ return 1;//-1 } else if(a<b){ return -1;//1 } else { return 0 } } arr.sort(intSort); alert(arr); function IntSort(a,b){ return a-b; }
//x.slice(start, end) // //使用註解 // //x表明數組對象 //start表示開始位置索引 //end是結束位置下一數組元素索引編號 //第一個數組元素索引爲0 //start、end可爲負數,-1表明最後一個數組元素 //end省略則至關於從start位置截取之後全部數組元素 var arr1=['a','b','c','d','e','f','g','h']; var arr2=arr1.slice(2,4); var arr3=arr1.slice(4); var arr4=arr1.slice(2,-1); alert(arr2.toString()); //結果爲"c,d" alert(arr3.toString()); //結果爲"e,f,g,h" alert(arr4.toString()); //結果爲"c,d,e,f,g"
//x. splice(start, deleteCount, value, ...) // //使用註解 // //x表明數組對象 //splice的主要用途是對數組指定位置進行刪除和插入 //start表示開始位置索引 //deleteCount刪除數組元素的個數 //value表示在刪除位置插入的數組元素 //value參數能夠省略 var a = [1,2,3,4,5,6,7,8]; a.splice(1,2); //a變爲 [1,4,5,6,7,8] alert(a.toString()); a.splice(1,1); //a變爲[1,5,6,7,8] alert(a.toString()); a.splice(1,0,2,3); //a變爲[1,2,3,5,6,7,8] alert(a.toString());
//push pop這兩個方法模擬的是一個棧操做 //x.push(value, ...) 壓棧 //x.pop() 彈棧 //使用註解 // //x表明數組對象 //value能夠爲字符串、數字、數組等任何值 //push是將value值添加到數組x的結尾 //pop是將數組x的最後一個元素刪除 var arr1=[1,2,3]; arr1.push(4,5); alert(arr1); //結果爲"1,2,3,4,5" arr1.push([6,7]); alert(arr1) //結果爲"1,2,3,4,5,6,7" arr1.pop(); alert(arr1); //結果爲"1,2,3,4,5"
// unshift shift //x.unshift(value,...) //x.shift() //使用註解 // //x表明數組對象 //value能夠爲字符串、數字、數組等任何值 //unshift是將value值插入到數組x的開始 //shift是將數組x的第一個元素刪除 var arr1=[1,2,3]; arr1.unshift(4,5); alert(arr1); //結果爲"4,5,1,2,3" arr1. unshift([6,7]); alert(arr1); //結果爲"6,7,4,5,1,2,3" arr1.shift(); alert(arr1); //結果爲"4,5,1,2,3"
// js中數組的特性 //java中數組的特性, 規定是什麼類型的數組,就只能裝什麼類型.只有一種類型. //js中的數組特性1: js中的數組能夠裝任意類型,沒有任何限制. //js中的數組特性2: js中的數組,長度是隨着下標變化的.用到多長就有多長. var arr5 = ['abc',123,1.14,true,null,undefined,new String('1213'),new Function('a','b','alert(a+b)')]; /* alert(arr5.length);//8 arr5[10] = "hahaha"; alert(arr5.length); //11 alert(arr5[9]);// undefined */
//方法1:不指定參數 var nowd1=new Date(); alert(nowd1.toLocaleString( )); //方法2:參數爲日期字符串 var nowd2=new Date("2004/3/20 11:12"); alert(nowd2.toLocaleString( )); var nowd3=new Date("04/03/20 11:12"); alert(nowd3.toLocaleString( )); //方法3:參數爲毫秒數 var nowd3=new Date(5000); alert(nowd3.toLocaleString( )); alert(nowd3.toUTCString()); //方法4:參數爲年月日小時分鐘秒毫秒 var nowd4=new Date(2004,2,20,11,12,0,300); alert(nowd4.toLocaleString( )); //毫秒並不直接顯示
獲取日期和時間 getDate() 獲取日 getDay () 獲取星期 getMonth () 獲取月(0-11) getFullYear () 獲取完全年份 getYear () 獲取年 getHours () 獲取小時 getMinutes () 獲取分鐘 getSeconds () 獲取秒 getMilliseconds () 獲取毫秒 getTime () 返回累計毫秒數(從1970/1/1午夜)
function getCurrentDate(){ //1. 建立Date對象 var date = new Date(); //沒有填入任何參數那麼就是當前時間 //2. 得到當前年份 var year = date.getFullYear(); //3. 得到當前月份 js中月份是從0到11. var month = date.getMonth()+1; //4. 得到當前日 var day = date.getDate(); //5. 得到當前小時 var hour = date.getHours(); //6. 得到當前分鐘 var min = date.getMinutes(); //7. 得到當前秒 var sec = date.getSeconds(); //8. 得到當前星期 var week = date.getDay(); //沒有getWeek // 2014年06月18日 15:40:30 星期三 return year+"年"+changeNum(month)+"月"+day+"日 "+hour+":"+min+":"+sec+" "+parseWeek(week); } alert(getCurrentDate()); //解決 自動補齊成兩位數字的方法 function changeNum(num){ if(num < 10){ return "0"+num; }else{ return num; } } //將數字 0~6 轉換成 星期日到星期六 function parseWeek(week){ var arr = ["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]; // 0 1 2 3 ............. return arr[week]; }
//設置日期和時間 //setDate(day_of_month) 設置日 //setMonth (month) 設置月 //setFullYear (year) 設置年 //setHours (hour) 設置小時 //setMinutes (minute) 設置分鐘 //setSeconds (second) 設置秒 //setMillliseconds (ms) 設置毫秒(0-999) //setTime (allms) 設置累計毫秒(從1970/1/1午夜) var x=new Date(); x.setFullYear (1997); //設置年1997 x.setMonth(7); //設置月7 x.setDate(1); //設置日1 x.setHours(5); //設置小時5 x.setMinutes(12); //設置分鐘12 x.setSeconds(54); //設置秒54 x.setMilliseconds(230); //設置毫秒230 document.write(x.toLocaleString( )+"<br>"); //返回1997年8月1日5點12分54秒 x.setTime(870409430000); //設置累計毫秒數 document.write(x.toLocaleString( )+"<br>"); //返回1997年8月1日12點23分50秒
日期和時間的轉換: getTimezoneOffset():8個時區×15度×4分/度=480; 返回本地時間與GMT的時間差,以分鐘爲單位 toUTCString() 返回國際標準時間字符串 toLocalString() 返回本地格式時間字符串 Date.parse(x) 返回累計毫秒數(從1970/1/1午夜到本地時間) Date.UTC(x) 返回累計毫秒數(從1970/1/1午夜到國際時間)
//RegExp對象 // 在表單驗證時使用該對象驗證用戶填入的字符串是否符合規則. //建立正則對象方式1 參數1 正則表達式 參數2 驗證模式 g global / i 忽略大小寫. //參數2通常填寫g就能夠,也有「gi」. // 用戶名 首字母必須是英文, 除了第一位其餘只能是英文數字和_ . 長度最短不能少於6位 最長不能超過12位 //----------------------------建立方式1 /* var reg1 = new RegExp("^[a-zA-Z][a-zA-Z0-9_]{5,11}$","g"); // //驗證字符串 var str = "bc123"; alert(reg1.test(str));// true //----------------------------建立方式2 /填寫正則表達式/匹配模式; var reg2 = /^[a-zA-Z][a-zA-Z0-9_]{5,11}$/g; alert(reg2.test(str));// true */ //-------------------------------正則對象的方法------------------- //test方法 ==> 測試一個字符串是否複合 正則規則. 返回值是true 和false. //-------------------------String 中與正則結合的4個方法------------------. // macth search split replace var str = "hello world"; //alert(str.match(/o/g)); //查找字符串中 複合正則的 內容. //alert(str.search(/h/g));// 0 查找字符串中符合正則表達式的內容位置 //alert(str.split(/o/g)); // 按照正則表達式對字符串進行切割. 返回數組; alert(str.replace(/o/g, "s")); // hells wsrld 對字符串按照正則進行替換.
//Math對象 //該對象中的屬性方法 和數學有關. //Math是內置對象 , 與Global的不一樣之處是, 在調用時 須要打出 "Math."前綴. //屬性學習: //alert(Math.PI); //方法學習: //alert(Math.random()); // 得到隨機數 0~1 不包括1. //alert(Math.round(1.5)); // 四捨五入 //練習:獲取1-100的隨機整數,包括1和100 //var num=Math.random(); //num=num*10; //num=Math.round(num); // alert(num) //============max min========================= /* alert(Math.max(1,2));// 2 alert(Math.min(1,2));// 1 */ //-------------pow-------------------------------- alert(Math.pow(2,4));// pow 計算參數1 的參數2 次方. abs(x) 返回數的絕對值。 exp(x) 返回 e 的指數。 floor(x)對數進行下舍入。 log(x) 返回數的天然對數(底爲e)。 max(x,y) 返回 x 和 y 中的最高值。 min(x,y) 返回 x 和 y 中的最低值。 pow(x,y) 返回 x 的 y 次冪。 random() 返回 0 ~ 1 之間的隨機數。 round(x) 把數四捨五入爲最接近的整數。 sin(x) 返回數的正弦。 sqrt(x) 返回數的平方根。 tan(x) 返回角的正切。