JavaScripts学习日记——ECMAscript
1.Function对象
Function是一个很特殊的对象,特殊在该对象就像java中的方法一样,可以运行,可以传参数。
三种定义function对象的方法:
1.function fun1(a,b){
alert(a+b);
}
2.var fun2 = new Function("a","b","alert(a+b);");//最后一个参数代表函数体
3.var fun3 = function(a,b){
alert(a+b);
}
函数调用时要注意的事项:
1.js中函数的调用,跟java相比,只需要填对函数名称即可,不管参数怎么填都可以调用。(如参数个数不匹配)
2.js中并没有重载,不过可以通过内置对象arguments(代表参数运行时的实际参数列表)来模拟重载的功能。
2.1 使用它的.length属性获得实际参数的个数。
2.2 使用arguments[n]来获得具体的某个参数。
3.函数的返回。
3.1 js中函数的返回也使用 return关键字
3.2 跟java一样,return 还可以用作结束函数的运行.
4.void()运算符的作用是拦截函数的返回值,使其返回undefined。
2.三大包装类的学习
三大包装对象 String Number(了解) Boolean(了解)
特性:js中 string number boolean 是伪类. 可以直接使用三个包装对象中的方法和属性.
String的使用
var str = new String("hello"); //方法分为三类 //1.没有用的(开发中用的很少), 帮我们生成html代码的方法. alert(str.anchor("abc")); alert(str.big()); alert(str.sup()); //2.重要的 alert(str.charAt(1));//e 返回指定位置上的字符 alert(str.charCodeAt(1));// 返回对应字符的asc码值 alert(str.concat(" world"));// 连接字符串hello world alert(str.indexOf("l"));//2 检索字符串 alert(str.lastIndexOf("l"));//3 从后向前搜索字符串。 alert(str.substring(0, 2));// he 不包含最后一个参数角标所在字符 alert(str.slice(-3, -1));// hel 支持负数,从右向左数. //3.结合正则对象使用 mactch search split replace </script>
3.typeof和instanceof
typeof用于判断属于哪个原始类型(五种原始类型:number,String,undefined,Boolean,null)
instanceof用于判断对象具体属于哪个类型。
4.Global对象(内置对象)
使用原因:get方式提交时,如果有中文的话,会转成其他码比如: ?name=%E7%A2 ==> 是因为 HTTP协议 在传输中文时会出现问题.所以表单传输中文浏览器会自动转码,所以使用此对象的方法进行转码。
encodeURI(URI) 对中文进行编码
decodeURI(encodedURI) 对中文进行解码
encodeURIComponent(uriComponent) 除了对中文编码 还对一些符号进行编码 . 当我们要传递的参数 使用了一些特殊符号时,使用该方法编码.
decodeURIComponent(uriComponent)
escape(s) 已经淘汰的方法.
unescape(s)
两种方法应用场景不同,如下所示:
//---------encodeURI decodeURI------------------------ var str = "http://www.baidu.com?name=传智"; var str2 = encodeURI(str); alert(str2); alert(decodeURI(str2)); //-------------encodeURIComponentdecodeURIComponent-------------------- var str_3 = "http://www.baidu.com?name=张:三/" var str_4 = encodeURIComponent(str_3); alert(str_4); alert(decodeURIComponent(str_4));
5.Math对象
Math是内置对象 , 与Global的不同之处是, 在调用时 需要打出 "Math."前缀.
方法略
6.Array对象
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> <script type="text/javascript"> //Array对象 //创建方式1 var arr1 = [1,2,3]; //3 //创建方式2 构造函数中所有参数都作为 数组的元素. var arr2 = new Array(1,2,3); //alert(arr2.length); //创建方式3 如果Array构造函数中,只填一个参数并且为数字.那么这个参数是规定数组的长度,而不是数组的元素. var arr3 = new Array(3); // 创建一个长度为3 的空数组. //Array当中的属性 //length属性 ==> 数组的长度. //alert(arr3.length); // Array的遍历 /* for(var i = 0 ; i< arr2.length ; i++){ alert(arr2[i]); } */ //Array中的方法. //concat 两个数组相加. //join方法 返回一个字符串, 字符串内容是使用数组中各个元素相(按照给定参数)连接. //alert(arr1.join("-")); //---------------pop方法 push方法------------------ //使用这两个方法 模拟了一个栈的数据结构.(先进后出) /* alert(arr1.pop());//3 alert(arr1.length);//2 */ // alert(arr1.push(4));//4 //------------------------reverse 将数组反转 ---------- /* arr1.reverse(); alert(arr1.join()); */ //---------------------sort 排序 --------------------------- //注意!!: sort方法排序,默认是按照字符串比较规则来排序的. /* var arr4 = [8,2,3,9,1,100]; arr4.sort(_abc); alert(arr4.join()); */ //比较器1 function abc(a,b){ if(a > b){ return 1; }else if(a == b){ return 0; }else{ return -1; } } //比较器2 function _abc(a,b){ return a-b; } // 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 */ //-----------------------面向对象的范畴,该现象不要研究.----------------------------------- arr5['abc'] = 100; alert(arr5.length);//8 alert(arr5['abc']); </script> </head> <body> </body> </html>
7.Date对象
1.new Date() 获取当前时间
2.getFullYear() 获取年份
3.getMonth() 获取月份注意 1月份结果为0
4.getHours() 小时
5.getDate() 日期
6.getMinutes() 分钟
7.getSeconds() 获取秒
8.getTime() 获取毫秒值.
9. toLocaleString () 获取本地的时间格式字符串.
//例一: 打印出当前日期 格式如下. // 2014年06月18日 15:40:30 星期三 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]; } //例二: 获得 当前格林时间毫秒数, 并转换成 当前日期 var date = new Date(); var time = date.getTime()-10000000000; //Date的构造方法,可以填入格林毫秒数 var date2 = new Date(time); // alert(date2.toLocaleString());
8.RegExp对象(正则)
在表单验证时使用该对象验证用户填入的字符串是否符合规则.
创建正则对象方式1 参数1 正则表达式 参数2 验证模式 g global / i 忽略大小写/m多行匹配. 参数2一般填写g就可以.
用户名 首字母必须是英文, 除了第一位其他只能是英文数字和_ . 长度最短不能少于6位 最长不能超过12位
<script type="text/javascript"> //RegExp对象 // 在表单验证时使用该对象验证用户填入的字符串是否符合规则. //创建正则对象方式1 参数1 正则表达式 参数2 验证模式 g global / i 忽略大小写. 参数2一般填写g就可以. // 用户名 首字母必须是英文, 除了第一位其他只能是英文数字和_ . 长度最短不能少于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 对字符串按照正则进行替换. </script>