在JavaScript中除了null和undefined以外其他的数据类型都被定义成了对象,也可以用创建对象的方法定义变量,String、Math、Array、Date、RegExp都是JavaScript中重要的内置对象,在JavaScript程序大多数功能都是基于对象实现的。
一、字符串String对象
1、字符串对象的创建
//方式一:变量 = “字符串” s="HEllo world";
//方式二:字串对象名称 = new String (字符串) a=new String("hello world") ;
2、字符串对象属性及函数
具体罗列如下:
x.length ----获取字符串的长度 x.toLowerCase() ----转为小写 x.toUpperCase() ----转为大写 x.trim() ----去除字符串两边空格 ----字符串查询方法 x.charAt(index) ----通过索引找字符 x.indexOf(findstr) ----通过字符找索引 x.lastIndexOf(findstr) x.match(regexp) ----match返回匹配字符串的数组,如果没有匹配则返回null x.search(regexp) ----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) ----截取从索引为start开始、长度为length的字符串 x.substring(start, end) ----截取从索引start开始到索引end结束的字符串,不包含索引end的字符 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) ----字符串替换 x.split(); ----分割字符串 var str1="一,二,三,四,五,六,日"; var strArray=str1.split(","); alert(strArray[1]);//结果为"二" x.concat(addstr) ----拼接字符串
二、数组Arry对象
1、数组对象的创建
//创建方式1: var 数组名 = [元素0,元素1,….]; // 如:var arr=[1,2,3];
//创建方式2: var 数组名 = new Array(元素0,元素1,….); //如: var arr=new Array(100,"a",true);
//创建方式3: var 数组名 = new Array(长度); var arr=new Array(7); arr[0]="星期日"; arr[1]="星期一"; ... arr[6]="星期六";
2、数组对象的属性和方法
(1)join()方法
将数组拼成字符串:
s=["hello","word"] var ret=s.join("|"); console.log(ret); //结果为:hello|word
(2)concat()方法
用于扩充数组,与python中列表extend()方法不同的是,此方法并不改变原有数组,只是得到一个扩充后的数组副本。
var arr=[11,3.14,true,"hello"]; var ret=arr.concat(444,555); //写成数组形式也可:[444,555] console.log(ret) //结果为:[11, 3.14, true, "hello", 444, 555]
(3)reverse()方法
将现有数组反转,改变现有数据顺序:
var arr=[12,100,23,45]; arr.reverse() console.log(arr); //结果:[45, 23, 100, 12] console.log(arr.toString()) //结果:45,23,100,12
(4)sort()方法
对现有数组顺序按照acssii码的顺序进行重新排序:
var arr=[12,100,23,45]; arr.sort() console.log(arr); //结果为: [100, 12, 23, 45]
上述数字数组按照数字的真实大小进行排序的做法如下:
var arr=[12,100,23,45]; function Mysort(a,b) { return a-b } arr.sort(Mysort) console.log(arr); //[12, 23, 45, 100]
(5)slice()方法
按照索引对数组进行切片,用法和字符串中的此方法一样,示例如下:
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"
(6)push()和pop()方法
push是将value值添加到数组x的结尾,value可以为字符串、数字、数组等任何值。pop是将数组x的最后一个元素删除:
var arr3=[111,222,333]; arr3.push(444,555); console.log(arr3); //[111, 222, 333, 444, 555] arr3.push([666,777]) //数组[666,777]作为一个整体放在数组aar3内 console.log(arr3) //[111, 222, 333, 444, 555, Array(2)] var s=arr3.pop(); console.log(arr3); //[111, 222, 333, 444, 555] console.log(s); //[666, 777]
(7)unshift()和shift()
与(6)中的相反,unshift()是将value值添加到数组x的开头,value可以为字符串、数字、数组等任何值。shift是将数组x的第一个元素删除:
var arr3=[111,222,333]; arr3.unshift(555,6666); //多个字符按照原有顺序整体放在数组前头 console.log(arr3); // [555, 6666, 111, 222, 333] s=arr3.shift(); console.log(arr3) //[6666, 111, 222, 333] console.log(s) //555
(8)splice()
x. splice(start, deleteCount, value, ...),splice的主要用途是对数组指定位置进行删除和插入,start表示开始位置索引,deleteCount删除数组元素的个数,value表示在删除位置插入的数组元素,可以省略。
var a = [1,2,3,4,5,6,7,8]; a.splice(1,2); alert(a.toString()); //a变为 [1,4,5,6,7,8] a.splice(1,1); alert(a.toString()); //a变为[1,5,6,7,8] a.splice(1,0,2,3); alert(a.toString()); //a变为[1,2,3,5,6,7,8]
js中数组的特性:java中数组的特性, 规定是什么类型的数组,就只能装什么类型.只有一种类型。js中的数组特性1: js中的数组可以装任意类型,没有任何限制;js中的数组特性2: js中的数组,长度是随着下标变化的.用到多长就有多长。
三、data时间对象
1、创建data对象
//方法1:不指定参数,表示当前时间 var nowd1=new Date(); alert(nowd1.toLocaleString( )); //2017/11/9 下午5:20:54 //方法2:参数为日期字符串 var nowd2=new Date("2004/3/20 11:12"); alert(nowd2.toLocaleString( )); //结果为:2004/3/20 上午11:12:00 var nowd3=new Date("04/03/20 11:12"); alert(nowd3.toLocaleString( )); //结果为:2020/4/3 上午11:12:00 //方法3:参数为毫秒数 var nowd3=new Date(5000); alert(nowd3.toLocaleString( )); //结果为:1970/1/1 上午8:00:05 alert(nowd3.toUTCString()); //结果为:Thu, 01 Jan 1970 00:00:05 GMT //方法4:参数为年月日小时分钟秒毫秒 var nowd4=new Date(2004,2,20,11,12,0,300); alert(nowd4.toLocaleString( )); //结果为:2004/3/20 上午11:12:00毫秒并不直接显示
2、获取日期和时间
获取日期和时间 getDate() 获取日 getDay () 获取星期 getMonth () 获取月(0-11) getFullYear () 获取完整年份 getYear () 获取年 getHours () 获取小时 getMinutes () 获取分钟 getSeconds () 获取秒 getMilliseconds () 获取毫秒 getTime () 返回累计毫秒数(从1970/1/1午夜)
应用实例:输出当前具体时间,如:“ 2014年06月18日 15:40:30 星期三”
function getCurrentDate(){ var date = new Date(); //1. 创建Date对象,没有填入任何参数那么就是当前时间 var year = date.getFullYear(); //2. 获得当前年份 var month = date.getMonth()+1; //3. 获得当前月份 js中月份是从0到11. var day = date.getDate(); //4. 获得当前日 var hour = date.getHours(); //5. 获得当前小时 var min = date.getMinutes(); //6. 获得当前分钟 var sec = date.getSeconds(); //7. 获得当前秒 var week = date.getDay(); //8. 获得当前星期,没有getWeek 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]; }
四、math对象
//该对象中的属性方法 和数学有关. 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) 返回角的正切。
实例:
alert(Math.random()); // 获得随机数 0~1 不包括1. alert(Math.round(1.5)); // 四舍五 //练习:获取1-100的随机整数,包括1和100 var num=Math.random(); num=num*100; num=Math.round(num); alert(num)
五、BOM对象
windoes对象:所有浏览器都支持 window 对象,概念上讲.一个html文档对应一个window对象;功能上讲: 控制浏览器窗口的;使用上讲: window对象不需要创建对象,直接使用即可。
1、window对象方法
alert() 显示带有一段消息和一个确认按钮的警告框。
confirm() 显示带有一段消息以及确认按钮和取消按钮的对话框。
prompt() 显示可提示用户输入的对话框。
open() 打开一个新的浏览器窗口或查找一个已命名的窗口。
close() 关闭浏览器窗口。
setInterval() 按照指定的周期(以毫秒计)来调用函数或计算表达式。
clearInterval() 取消由 setInterval() 设置的 timeout。
setTimeout() 在指定的毫秒数后调用函数或计算表达式。
clearTimeout() 取消由 setTimeout() 方法设置的 timeout。
scrollTo() 把内容滚动到指定的坐标。
2、应用实例
(1)alert、confirm、prompt
//confirm点击确认时返回值为true,点击取消返回fasle,通过if语句可以触发不同的事件 var ret=confirm("是否继续?"); console.log(ret); if (ret){ } else { } //prompt点击确认时返回值为输入的内容,也可以通过设置if条件,触发不同事件 var ret=prompt("请输入一个数字") console.log(ret)
(2)setInterval,clearInterval
setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭。由 setInterval() 返回的 ID 值可用作 clearInterval() 方法的参数。
<script> function foo() { console.log("ok") } var ID=setInterval(foo,1000); //定时器:每1000毫秒执行一次foo函数 clearInterval(ID); //清除定时器 </script>
定时器实例:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script> function loop_time() { // 创建时间字符串 var date=(new Date()).toLocaleString(); console.log(date); // 赋值:将时间赋给input标签的默认值value var ele_input=document.getElementById("d1"); // 获得input标签对象 ele_input.value=date } var ID; //未赋值的变量ID值为undefined function foo() { if (ID==undefined){ //加if判断时为了防止多次点击begin按钮时开启多个定时器 loop_time(); ID=setInterval(loop_time,1000); //每开启一个定时器时ID的值是不一样的 } } function end_time() { clearInterval(ID); //清除定时器 console.log(ID); ID=undefined //将ID值重新赋予undefined,满足下次开启定时器 } </script> </head> <body> <input type="text" id="d1" style=" 200px"> <button onclick="foo()">begin</button> <button onclick="end_time()">end</button> </body> </html>