1. 内置对象
JavaScript中对象分为3种:自定义对象,内置对象,浏览器对象
内置对象就是JS由于自带的一些对象,这些对象提高开发者使用,提供了一些常用的或者最基本必要的功能。
内置对象可以帮助开发者快速开发。
JavaScript中提供多个内置对象:math,date,array,string等。
2. Math 对象
Math数学对象,不使用一个构造函数,所有不需要new来调用,而是直接使用里面的属性和方法即可。
Math.PI 圆周率
console.log(Math.PI); //圆周率
Math.max( ) 最大值 Math.min( ) 最小值
console.log(Math.max(1,9,100));// 求最大值
console.log(Math.max (1,2, 'xiaoming') ; //有不是数值类型的值存在 NaN
console.log(Math.max( )); //括号内参数可为空 ,结果为-Infinity
利用对象封装自己的数学对象,里面有PI,最大值,最小值
var maMath={
PI : 3.14159,
max :function( ){
var max=arguments[0];
for(var i=0;i<arguments.length; i++){
if( arguments[i] > max){
max=arguments[i];
}
return max;
},
min :function( ){
var min=arguments[0];
for(var i=0;i<arguments.length; i++){
if( arguments[i] < min){
max=arguments[i];
}
return min;
}
}
console.log(myMath.PI); //3.141592653
console.log(myMath.max(1,3,5,7,9); //9
console.log(myMath.min(1,2,3,4,5); //1
Math.abs( ) 绝对值
console.log(Math.abs(1)); //1 绝对值方法
console.log(Math.abs(-1)); //1
console.log(Math.abs('-1')); //1 隐式转换为数值型
Math.floor() 向下取整,取小的值
console.log(Math.floor(1.1)); //1
console.log (Math.floor(1.9)); //1
Math.cell() 向上取整,取大的值
console.log(Math.cell(1.1)); //2
console.log (Math.cell(1.9)); //2
Math.round() 四舍五入
console.log(Math.round(1.1)); //1
console.log (Math.round(1.5)); //2
console.log (Math.round(-1.1)); //-1
console.log (Math.round(-1.5)); //-1 0.5要往大取,-1比-2大,因此取-1
Math.random() 随机数方法
返回随机的小数;这个方法中无参数
Math.floor(Math.random()) 随机整数
得到两个数之间的随机整数,并且包含这两个整数
function getRandom(min,max){
return Math.floor(Math.random() *(max - min + 1) )+min;
}
console.log(getRandom(1,10);
随机点名
var arr=['zhangsan' , 'lisi' , 'wangwu' ,'xiaohong' , 'xiaoming'];
var len=arr.length;
console.log(arr[getRandom(0,len-1)]);
猜数字游戏
function getRandom(min,max){
return Math.floor(Math.random() *(max - min + 1) )+min;
}
var random=getRandom(1,10);
while(true){
var num=prompt('猜猜是哪个数');
if(num>random){
alert ('猜大了')
}else if(num<random){
alert ('猜小了')
}else{
alert('猜对了')
break; //退出整个循环,程序结束。 若无break则为死循环
}
function getRandom(min,max){
return Math.floor(Math.random()*(max-min+1))+min;
}
var random=getRandom(1,50);
var a='超出10次,没有机会了';
for(var i=0;i<=10;i++){
var num=prompt('猜猜是哪个数');
if(num>random){
alert ('猜大了')
}else if(num<random){
alert ('猜小了')
}else{
a=‘恭喜你猜中了’;
alert('猜对了')
}
}
console.log(a);
3. Date对象
用来处理日期和时间。
Date是一个构造函数,必须使用new来调用创建日期对象。
Date方法的使用
var arr=new Array(); //创建了一个数组对象
var obj=new Object(); //创建了一个对象实例
var date=new Date(); // 创建了一个日期对象
Date()构造函数的参数
- 参数为空
var date=new Date(); //括号内参数为空
console.log(date); //返回系统的当前时间
- 参数为数值
var date1 = new Date(2021,10,8); //参数为数字型
console.log(date1); 返回的是11月,不是10月
- 参数为字符串
var date2 = new Date(‘2021-10-8 8:8:8’); //参数为字符串型
console.log(date2);
日期格式化
获取日期的指定部分
-
getFullYear() 获取当年
-
getMonth() 获取当月(0-11)
-
getDate() 获取当天日期
-
getDay() 获取星期几 (周日为0,周六为6)
-
getHours() 获取当前时
-
getMinutes()获取当前分钟
-
getSeconds() 获取当前秒
var date=new Date(); console.log(date.getFullYear()); console.log(date.getMonth()+1); //月份返回值为0-11;需要加1为正确月份 console.log(date.getDate()); console.log(date.getDay()); console.log(date.getHours()); var year=date.getFullYear(); var month=date.getMonth()+1; var dates=date.getDate(); var arr=['星期日','星期一','星期二','星期三','星期四','星期五','星期六'] var day=date.getDay(); console.log('今天是:'+year+'年' + month +'月' +dates +'日' + arr[day]);
格式化时分秒
function getTimer(){
var time=new Date();
var h=time.getHours;
h=h<10? '0'+h :h;
var m=time.getMinutes();
m=m<10? '0'+m : m;
var s=time.getSecond();
s=s<10? '0'+s : s;
return h + ':' + m + ':' +s ;
}
console.log(getTimer());
时间戳
Date的总毫秒数,是距离1970年1月1号过了多少毫秒数。
-
通过valueOf() 或 getTime() 获取时间戳
var date=new Date(); console.log(date.valueOf()); //现在时间距离1970年1月1日的毫秒数 console.log(date.getTime());
-
简单写法(常用写法)
var date1=+new Date(); //+new Date() 返回时间总毫秒数
-
H5新增 获取总毫秒数
console.log(Date.now());
4. 数组对象
创建数组
-
利用数组字面量
var arr=[1,2,3]; console.log(arr[0]);
-
利用new创建
var arr=new Array(); //创建了一个空的数组 //括号内为空,为空数组 var arr1=new Array(2); //创建了一个数组,数组长度为2,有两个空的数组元素 //括号内只有一个数值,则为该数组的长度 var arr2=new Array(2,3); //创建了一个数组,相当于[2,3] //括号内有两个及以上数值,则表示数组的内容
检测数组的方法
-
instaneof 检测是否为数组
var arr=[ ]; var obj={ }; console.log(arr instanceof Array); //true console.log(obj instanceof Array); //flase
翻转数组
function reverse(arr){
if (arr instanceof Array){
var newArr=[ ] ;
for(var i=arr.length-1;i>=0;i--){
newArr[newArr.length]=arr[i];
}
return newArr;
}else{
return 'error 这个参数必须为数组形式'
}
}
console.log(reverse([1,2,3]); //[3,2,1]
console.log(reverse(1,2,3); //error
-
Array . isArray(参数);
H5新增方法,ie9以上版本支持console.log(Array.isArray(arr)); //true
console.log(Array.isArray(obj)); //flase
添加和删除数组元素的方法
-
push() 在数组末尾添加一个或多个数组元素
括号内参数直接写要添加的数组元素
push完毕后返回的结果为新数组的长度
原数组会发生变化var arr=[1,2,3]; //arr.push(4,'xiaoming'); //添加到数组末尾 console.log(arr.push(4,'xiaoming')); //5 数组长度 console.log(arr); //[1,2,3,4,'xioaming']
-
unshift () 在数组开头添加一个或几个元素
同push() -
pop() 删除数组中最后一个元素
括号内不用写参数
pop完毕后返回的结果为删除的元素
原数组会发生变化var arr=[1,2,3]; console.log(arr.pop()); //3 console.log(arr); //[1,2]
-
shift()删除数组中的第一个元素
同pop()var arr=[1,2,3]; console.log(arr.shift()); //1 console.log(arr); //[2,3]
-
concat( ) 连接两个或多个数组,不影响原数组,
返回链接后的新数组
var arr=[1,2,3]; var arr1=[4,5,6] var arr2=arr.concat(arr1); console.log(arr2); //[1,2,3,4,5,6] console.log(arr); //[1,2,3]
-
slice(begin, end ) 数组截取,
返回被截取的新数组
var arr=[1,2,3,4,5]; var arr1=arr.slice(1,3); console.log(arr1); console.log(arr);
-
splice(begin, count ) 数组删除元素,从第begin个元素开始,删除count个元素,
返回被删除元素的新数组
,会影响原数组
数组排序
-
翻转数组 reverse()
var arr=[1,2,3,4,5]; arr.reverse(); console.log(arr); //[5,4,3,2,1]
-
冒泡排序 sort()
var arr1=[1,5,7,2,4,8]; arr1.sort(function(a,b){ return a-b; //升序排序 // return b-a; //降序排序 }); console.log(arr1); //[1,2,4,5,7,8]
数组索引方法
- indexOf( 数组元素) 从前往后查找返回数组元素的索引号
若数组中有多个该元素,则返回该元素第一次出现时的索引号;
若该元素不存在数组中,则返回-1;
var arr=[1,2,3,4];
var arr1=[1,2,1,3,4];
var arr2=[2,3,4,5];
console.log(arr.indexOf(1)); //0
console.log(arr1.indexOf(1)); //0
console.log(ar2.indexOf(1)); //-1
-
lastIndexOf(数组元素) 从后往前查找返回数组元素的索引号
var arr1=[1,2,1,3,4]; console.log(arr1.lastIndexOf(1)); //2
数组去重
遍历旧数组,查看旧数组元素是否在新数组中存在,存在则不添加,不存在则将该元素添加进新数组中。
function unique(arr){
var newArr=[ ];
for(var i=0;i<arr.length;i++){
if( newArr.indexOf(arr[i]) == -1){
newArr.push(arr[i]);
}
}
return newArr;
}
var demo=unique([1,2,1,3,4,5]);
console.log(demo);
数组转换为字符串
- toString( ) 将数组转换为字符串
var arr=[1,2,3];
console.log(arr.toStirng()); //1,2,3
- join (分隔符) 将数组元素用分隔符分隔开
var arr=[1,2,3];
console.log(arr.join()); //1,2,3 括号内无参数则默认为用逗号分隔
console.log(arr.join(’-’)); //1-2-3
console.log(arr.join(’&’)); //1&2&3
5. 字符串对象
基本包装类型
var str='xiaoming';
console.log(str.length);
只有复杂数据类型才有属性和方法,这里为基本包装类型。
装箱,就是把基本数据类型转换为对应的引用类型
的过程。
而拆箱与装箱相反,即把引用类型转换为基本的数据类型
。
JavaScript中有三种特殊的引用数据类型:Stirng,Number,Boolean.
基本数据类型转换为引用数据类型就可以使用引用数据类型的属性和方法了。
(1) 生成临时变量,把简单类型包装为复杂数据类型
var temp = new String(‘andy’);
(2) 赋值给我们生命的字符变量
str =temp;
(3) 销毁临时变量
temp = null;
字符串不可变
字符串不可变指的是里面的值不可变,虽然看上去可以改变字符串的内容,实际上是地址发生改变
,内存中新开辟了一个内存空间。
因为字符串是不可变的,所以尽量不要大量拼接字符串,会开辟大量的空间,占用内存空间。
根据字符返回位置
indexOf( 要查找的字符,[查找的起始位置]) 从前往后查找
lastIndexOf() 从后往前查找
var str='xiaoming';
console.log(str.indexOf('i')); //1
console.log(str.indexOf('i',2)); //5 从第2个位置开始往后查找
求某个字符出现的位置及次数
先查找第一个指定字符出现的位置,只要indexOf返回的结果不是-1,就继续往后查找,利用indexOf的第二个参数,每次查找后加一使其往后查找。
var str='abodefoigkoxyz';
var index=str.indexOf('o');
var num=0;
while(index!= -1){
console.log(index);
num++;
index=str.indexOf('o' , index+1);
}
console.log('o出现的次数为:' +num);
根据位置返回字符
-
charAt(index) 根据位置返回字符
var str='andy'; console.log(str.charAt(3));
遍历所有字符
for (var i=0; i<str.length ; i++){
console.log(str.charAt(i));
}
-
charCodeAt(index) 返回相应索引号的字符的ASCII值 目的是判断用户按下了哪个键
console.log(str.charCodeAt(0)); //97 a对应的ASCII为97
-
str[index] H5新增
console.log(str[0]); //a
判断字符串中出现次数最多的字符,并统计其出现次数
利用charAt() 遍历字符串,将每个字符都存储给对象,若对象没有该属性,就使其等于一,若该属性存在,则使其加1;遍历对象,得到最大的属性值和对应的字符。
var str='abodefoigkoxyz';
var o={ };
for(var i=0; i<str.length;i++){
var chars=str.charAt(i); //chars 是遍历的str的每个字符
if(o[chars]){ // o[chars] 得到的是属性值
o[chars]++;
}else{
o[chars]=1;
}
}
console.log(o);
//遍历对象
var max=0;
var ch=' ' ;
for (var k in o){
//k为属性名
//o[k] 得到的是属性值(每个字符出现的次数)
if( o[k]>max){
max=o[k];
ch = k;
}
}
console.log(max);
console.log('最多的字符为' + k);
拼接和截取字符串
返回一个新的字符串,不会改变原来的字符串
-
concat(str1,str2,str3…)
拼接字符串,用于连接两个或多个字符串。 等效于+ ,但是+更常用var str='xiaoming'; console.log(str.concat('hello')); //xiaominghello
-
substr(start, length)
截取字符串,从start位置开始,取length个字符。var str=‘xiaoming’;
console.log(str.substr(1,3)); //iao 从第二个开始,取三个字符 -
slice(strat, end)
截取字符串,从start位置开始,截取到end位置,取不到end位置字符 -
substring(start, end )
截取字符串,从start位置开始,截取到end位置,取不到end
基本与slice相同,不接受负值。
替换字符串
返回一个新的字符串,不会改变原来的字符串
replace(‘被替换的字符’ , ‘替换的字符’)
只会替换第一个字符
var str='andy';
console.log(str.replace('a' , 'b'); //bndy
将字符串中所有o替换为*
var str1='abodefoigkoxyz';
while(str1.indexOf('o') !== -1){
str1=str1.replace('o','*');
} //每次只能替换一个,因此利用循环替换所有的
console.log(str1);
字符串转换为数组
split( '分隔符 ')
var str='red ,pink ,blue';
console.log(str.split(' , ')) ; // [ red , pink , blue]
var str='red&pink&blue';
console.log(str.split(' & ')) ; // [ red , pink , blue]
大小写
toUpperCase() 转换为大写
toLowerCase() 转换为小写