lzyq858手机版
  咨询电话:15554718838

博马优惠

JavaScript之ECMA对象的学习

  从传统意义上来说,ECMAScript 并不真正具有类。事实上,除了说明不存在类,在 ECMA-262 中根本没有出现“类”这个词。ECMAScript 定义了“对象定义”,逻辑上等价于其他程序设计语言中的类。

  var o = new Object();

1 对象的概念和分类

由ECMAScript定义的本地对象.独立于宿主环境的 ECMAScript 实现提供的对象.(native object)ECMAScript 实现提供的、独立于宿主环境的所有对象,在 ECMAScript 程序开始执行时出现.这意味着开发者不必明确实例化内置对象,它已被实例化了。ECMA-262 只定义了两个内置对象,即 Global 和 Math (它们也是本地对象,根据定义,每个内置对象都是本地对象)。(built-in object)所有非本地对象都是宿主对象(host object),即由 ECMAScript 实现的宿主环境提供的对象。所有 BOM 和 DOM 对象都是宿主对象。

  object对象ECMAScript 中的所有对象都由这个对象继承而来;Object 对象中的所有属性和方法都会出现在其他对象中

ToString() : 返回对象的原始字符串表示。ValueOf() : 返回最适合该对象的原始值。对于许多对象,该方法返回的值都与 ToString() 的返回值相同。

 

11种内置对象

包括:Array ,String , Date, Math, Boolean, Number  Function, Global, Error, RegExp , Object

简介:

  在JavaScript中除了nullundefined以外其他的数据类型都被定义成了对象,也可以用创建对象的方法定义变量,StringMathArrayDateRegExp都是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>

 

2  String对象

2.1 自动创建字符串对象

var str1="hello world";alert(str1.length);alert(str1.substr(1,5));

  调用字符串的对象属性或方法时自动创建对象,用完就丢弃

2.2  手工创建字符串对象

<script> var str1 = new String("hello world"); alert(str1.length); alert(str1.substr(1,7)) </script>

 

采用new创建字符串对象str1,全局有效,结果如下;

2.3 String对象的属性

获取字符串长度lengthvar str1="String对象";var str2="";alert("str1长度 "+str1.length);alert("str2长度 "+str2.length);

 

 

2.4 练习 大小写转换

var str1="AbcdEfgh"; var str2=str1.toLowerCase();var str3=str1.toUpperCase();alert(str2);//结果为"abcdefgh"alert(str3);//结果为"ABCDEFGH"

2.5 练习 获取指定字符

书写格式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

2.6 练习查询字符串

//书写格式////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);//结果为2alert(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

2.7 子字符串处理

//截取子字符串////书写格式////x.substr(start, length)////x.substring(start, end)////使用注解////x代表字符串对象////start表示开始位置////length表示截取长度////end是结束位置加1////第一个字符位置为0var 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]);//结果为"二"

 连接字符串

//y=x.concat(addstr)////使用注解////x代表字符串对象//addstr为添加字符串//返回x+addstr字符串 var str1="abcd"; var str2=str1.concat("efgh");alert(str2);//结果为"abcdefgh"

3 Array对象

3.1 创建数组对象

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>

 

结果:

3.2 创建二维数组

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>

 

 

3.3 Array对象的属性

  获取数组元素的个数: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]+" | ");}

3.4 Array对象的方法

3.5 练习1

<!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>

 结果:

3.6 连接数组join方法

//书写格式//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"

 

3.7 连接数组concat方法

//连接数组-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,3alert(b.toString());//返回结果为1,2,3,4,

 

3.8 数组排序reverse sort

//x.reverse()//x.sort()var arr1=[32, 12, 111, 444];//var arr1=["a","d","f","c"];arr1.reverse(); //颠倒数组元素alert(arr1.toString());//结果为444,111,12,32arr1.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;}

 

3.9 数组切片 slice

//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"

 

3.10 删除子数组

//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());

 

3.11 数组的进出栈操作(1)

//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"

 

3.12 数组的进出栈操作(2)

// 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"

 

3.13 总结js的数组特性

// 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 */

4 Date对象

4.1 创建Date对象

//方法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( ));//毫秒并不直接显示

 

4.2 Date对象的方法——获取日期和时间

获取日期和时间getDate() 获取日getDay () 获取星期getMonth () 获取月(0-11)getFullYear () 获取完整年份getYear () 获取年getHours () 获取小时getMinutes () 获取分钟getSeconds () 获取秒getMilliseconds () 获取毫秒getTime () 返回累计毫秒数(从1970/1/1午夜)

 

4.3 练习实例

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];}

 

4.4 Date对象的方法——设置日期和时间

//设置日期和时间//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); //设置年1997x.setMonth(7); //设置月7x.setDate(1); //设置日1x.setHours(5); //设置小时5x.setMinutes(12); //设置分钟12x.setSeconds(54); //设置秒54x.setMilliseconds(230); //设置毫秒230document.write(x.toLocaleString( )+"<br>");//返回1997年8月1日5点12分54秒x.setTime(870409430000); //设置累计毫秒数document.write(x.toLocaleString( )+"<br>");//返回1997年8月1日12点23分50秒

 

4.5 Date对象的方法——日期和时间的转换

日期和时间的转换:getTimezoneOffset():8个时区×15度×4分/度=480;返回本地时间与GMT的时间差,以分钟为单位toUTCString()返回国际标准时间字符串toLocalString()返回本地格式时间字符串Date.parse(x)返回累计毫秒数(从1970/1/1午夜到本地时间)Date.UTC(x)返回累计毫秒数(从1970/1/1午夜到国际时间)

 5 RegExp对象

//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 对字符串按照正则进行替换.

 6 Math对象

//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) 返回角的正切。