javascript中有没有内置对象
这篇文章主要介绍了javascript中有没有内置对象,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
javascript中有内置对象。内置对象是JS语言自带的一些对象,常见的有:String对象、Array对象、Date对象、Boolean对象、Number对象、Math对象、RegExp对象、Global对象等等。
本教程操作环境:windows7系统、javascript1.8.5版、Dell G3电脑。
JavaScript中的对象分为3中:自定义对象、内置对象、浏览器对象
前面两种对象是JS基础内容,属于ECMAScript;第三个浏览器对象属于我们JS独有的
内置对象就是指JS语言自带的一些对象,这些对象供开发者使用,并提供了一些常用的或是最基本而必要的功能(属性和方法)
内置对象最大的优点就是帮助我们快速开发
JavaScript提供了多个内置对象,Math、Date、Array、String等
String对象:字符串对象,提供了对字符串进行操作的属性和方法。
Array对象:数组对象,提供了数组操作方面的属性和方法。
Date对象:日期时间对象,可以获取系统的日期时间信息。
Boolean对象:布尔对象,一个布尔变量就是一个布尔对象。(没有可用的属性和方法)
Number对象:数值对象。一个数值变量就是一个数值对象。
Math对象:数学对象,提供了数学运算方面的属性和方法。
Object对象
RegExp对象
Global对象
Function对象
.....
Math对象
//Math数学对象不是一个构造函数,所以我们不需要new来调用而是直接使用里面的属性和方法即可console.log(Math.PI);//一个属性圆周率console.log(Math.max(1,2,99));//99console.log(Math.max(-1,-12));//-1console.log(Math.max(1,99,'数学对象'));//NaNconsole.log(Math.max());//-Infinity
案例:封装自己的数学对象
varmyMath={PI:3.141592653,max:function(){varmax=arguments[0];for(vari=1;i<arguments.length;i++){if(arguments[i]>max){max=arguments[i];}}returnmax;},min:function(){varmin=arguments[0];for(vari=1;i<arguments.length;i++){if(arguments[i]<min){min=arguments[i];}}returnmin;}}console.log(myMath.PI);console.log(myMath.max(1,5,9));console.log(myMath.min(1,5,9));
1Math概述
Math对象不是构造函数,它具有数学常数和函数的属性和方法。跟数学相关的运行(求绝对值,取整,最大值等)可以使用Math中的成员。
Math.PI//圆周率Math.floor()//向下取整Math.ceil()//向上取整Math.round()//四舍五入版就近取整注意-3,5结果是-3Math.abs()//绝对值Math.max()/Math.min()//求最大和最小值
//1.绝对值方法console.log(Math.abs(1));//1console.log(Math.abs(-1));//1console.log(Math.abs('-1'));//隐式转换会把字符串型-1转换为数字型console.log(Math.abs('wode'));//NaN//2.三个取整方法//(1)Math.floor()地板向下取整往最小了取整console.log(Math.floor(1.1));//1console.log(Math.floor(1.9));//1//(2)Math.ceil()ceil天花板向上取整往最大了取整console.log(Math.ceil(1.1));//2console.log(Math.ceil(1.9));//2//(3)Math.round()四舍五入其他数字都是四舍五入,但是.5特殊,它往大了取console.log(Math.round(1.1));//1console.log(Math.round(1.5));//2console.log(Math.round(1.9));//2console.log(Math.round(-1.1));//-1console.log(Math.round(-1.5));//这个结果是-1
2随机数方法 random()
//1.Math对象随机数方法random()返回一个随机的小数0=<x<1//2.这个方法里面不跟参数//3.代码验证console.log(Math.random());//4.我们想要得到两个数之间的随机整数并且包含这两个数//returnMath.floor(Math.random()*(max-min+1))+min;functiongetRandom(min,max){returnMath.floor(Math.random()*(max-min+1))+min;}console.log(getRandom(1,10));//5.随机点名vararr=['张三','李四','王五','赵六','张三疯']//console.log(arr[0]);//console.log(arr[getRandom(0,4)]);console.log(arr[getRandom(0,arr.length-1)]);
案例:猜数字游戏
程序随机生成一个1~10之间的数字,并让用户输入一个数字,
1.如果大于该数字,就提示,数字大了,继续猜;
2.如果小于该数字,就提示,数字小了,继续猜;
3.如果等于该数字,就提示猜对了,结束程序。
//1.随机生成一个1~10的整数,我们需要用到Math.random()方法//2.需要一直猜到正确为止,所以一直循环//3.用while循环合适更简单//4.核心算法:使用ifelseif多分支语句来判断大于,小于,等于functiongetRandom(min,max){returnMath.floor(Math.random()*(max-min+1))+min;}varrandom=getRandom(1,10);while(true){//死循环varnum=prompt('你来猜,输入1~10之间的一个数字');if(num>random){alert('猜大了');}elseif(num<random){alert('猜小了');}else{alert('猜对了');break;}}
//要求用户猜1~50之间的一个数字但是只有10次猜的机会functiongetRandom(min,max){returnMath.floor(Math.random()*(max-min+1))+min;}varrandom=getRandom(1,50);vari=0;while(i<10){//死循环varnum=prompt('你来猜,输入1~50之间的一个数字');if(num>random){alert('猜大了');}elseif(num<random){alert('猜小了');}else{alert('猜对了');break;//退出整个循环结束程序}i++;}if(i=10){alert('全部猜错了');}
日期对象
1Date概述
Date对象和Math对象不一样,他是一个构造函数,所以我们需要实例化后才能使用
Date实例用来处理日期和时间
2Date()方法的使用
1.获取当前时间必须实例化
varnow=newDate();console.log(now);
2.Date()构造函数的参数
如果括号里面有时间,就返回参数里面的时间,例如日期格式字符串为‘2019-5-1’,可以写成new Date('2019-5-1')或者new Date('2019/5/1')
//Date()日期对象是一个构造函数必须使用new来调用创建我们的日期对象vararr=newDate();//创建一个数组对象varobj=newObject();//创建了一个对象实例//1.使用Date如果没有参数返回当前系统的当前时间vardate=newDate();console.log(date);//2.参数常用的写法数字型2019,10,01或者是字符串型'2019-10-18:8:8'vardate1=newDate(2019,10,1);console.log(date1);//返回的是11月不是10月vardate2=newDate('2019-10-18:8:8');console.log(date2);
3日期格式化
我们想要2019-8-8 8:8:8格式的日期,要怎么办?
需要获取日期指定的部分,所以我们要手动的得到这种格式
方法名说明代码getFullYears()获取当年dObj.getFullYears()getMonth()获取当月(0-11)dObj.getMonth()getDate()获取当天日期dObj.getDate()getDay()获取星期几(周日0 到周六6)dObj.getDay()getHours()获取当前小时dObj.getHours()getMinutes()获取当前分钟dObj.getMinutes()getSeconds()获取当前秒数dObj.getSeconds()//格式化日期年月日vardate=newDate();console.log(date.getFullYear());//返回当前日期的年2020console.log(date.getMonth()+1);//月份返回的月份小1个月记得月份+1console.log(date.getUTCDate());//返回的是几号console.log(date.getDay());//6周一返回的是1周六返回的是6但是周日返回的是0//写一个2020年5月23日星期六varyear=date.getFullYear();varmonth=date.getMonth()+1;vardates=date.getDate();vararr=['星期日','星期一','星期二','星期三','星期四','星期五','星期六'];varday=date.getDay();console.log('今天是:'+year+'年'+month+'月'+dates+'日'+arr[day]);//格式化日期时分秒vardate=newDate();console.log(date.getHours());//时console.log(date.getMinutes());//分console.log(date.getSeconds());//秒//要求封装一个函数返回当前的时分秒格式是08:08:08functiongetTimer(){vartime=newDate();varh=date.getHours();h=h<10?'0'+h:h;varm=date.getMinutes();m=m<10?'0'+m:m;vars=date.getSeconds();s=s<10?'0'+s:s;returnh+':'+m+':'+s;}console.log(getTimer());
4获取日期的总的毫秒形式
Date对象是基于1970年1月1日(世界标准时间)起的毫秒数
我们经常利用总的毫秒数来计算时间,因为它更精确
//获取Date总的毫秒数(时间戳)不是当前时间的毫秒数而是距离1970年1月1日过了多少毫秒数//1.通过valueOf()getTime()vardate=newDate();console.log(date.valueOf());//就是我们现在时间距离1970.1.1总的毫秒数console.log(date.getTime());//2.简单的写法(最常用的写法)vardate1=+newDate();//+newDate()返回的就是总的毫秒数console.log(date1);//3.H5新增的获得总的毫秒数console.log(Date.now());
案例:倒计时效果
//倒计时效果//1.核心算法:输入的时间减去现在的时间就是剩余的时间,即倒计时,但是不能拿着时分秒相减,比如05分减去25分,结果会是负数的//2.用时间戳来做,用户输入时间总的毫秒数减去现在时间的总的毫秒数,得到的就是剩余时间的毫秒数//3.把剩余时间总的毫秒数转换为天、时、分、秒(时间戳转换为时分秒)//转换公式如下://d=parseInt(总秒数/60/60/24);//计算天数//h=parseInt(总秒数/60/60%24);//计算小时//m=parseInt(总秒数/60%60);//计算分数//s=parseInt(总秒数%60);//计算当前秒数functioncountDown(time){varnowTime=+newDate();//返回的是当前时间总的毫秒数varinputTime=+newDate(time);//返回的是用户输入时间总的毫秒数vartimes=(inputTime-nowTime)/1000;//times是剩余时间总的秒数vard=parseInt(times/60/60/24);//天d=d<10?'0'+d:d;varh=parseInt(times/60/60%24);//小h=h<10?'0'+h:h;varm=parseInt(times/60%60);//分m=m<10?'0'+m:m;vars=parseInt(times%60);//当前秒数s=s<10?'0'+s:s;returnd+'天'+h+'时'+m+'分'+s+'秒';}console.log(countDown('2020-5-2400:00:00'));vardate=newDate();console.log(date);
数组对象
1数组对象的创建
创建数组对象的两种方式
字面量方式
new Array()
//创建数组的两种方式//1.利用数组字面量vararr=[1,2,3];console.log(arr);//2.利用newArray()//vararr1=newArray();//创建了一个空的数组//vararr1=newArray(2);//这个2表示数组的长度为2里面有两个空的数组元素vararr1=newArray(2,3);//等价于[2,3]这样写表示里面有2个数组元素是2和3console.log(arr1);
2检测是否为数组
//翻转数组functionreverse(arr){//if(arrinstanceofArray){if(Array.isArray(arr)){varnewArr=[];for(vari=arr.length-1;i>=0;i--){newArr[newArr.length]=arr[i];}returnnewArr;}else{return'error这个参数要求必须是数组格式[1,2,3]'}}console.log(reverse([1,2,3]));console.log(reverse(1,2,3));//[]//检测是否为数组//(1)instanceof运算符它可以用来检测是否为数组vararr=[];varobj={};console.log(arrinstanceofArray);console.log(objinstanceofArray);//(2)Array.isArray(参数);H5新增的方法IE9以上版本支持console.log(Array.isArray(arr));console.log(Array.isArray(obj));
3添加删除数组元素的方法
删除数组最后一个元素,把数组长度减 1 无参数,修改原数组
返回它删除的元素的值unshift(参数1...)向数组的开头添加一个或更多元素,注意修改原数组并返回新的长度shift()删除数组的第一个元素,数组长度减1无参数,修改原数组并返回第一个元素值//添加删除数组元素的方法//1.push()在我们数组的末尾添加一个或者多个数组元素push推vararr=[1,2,3];//arr.push(4,'white');console.log(arr.push(4,'white'));//5数组长度console.log(arr);//(1)push是可以给数组追加新的元素//(2)push()参数直接写数组元素就可以了//(3)push完毕之后,返回的结果是新数组的长度//(4)原数组也会发生变化//2.unshift在我们数组的开头添加一个或者多个数组元素console.log(arr.unshift('red','green'));//7console.log(arr);//(1)unshift是可以给数组前面追加新的元素//(2)unshift()参数直接写数组元素就可以了//(3)unshift完毕之后,返回的结果是新数组的长度//(4)原数组也会发生变化//3.pop()它可以删除数组的最后一个元素console.log(arr.pop());//whiteconsole.log(arr);//(1)pop是可以删除数组的最后一个元素一次只能删除一个元素//(2)pop()没有参数//(3)pop完毕之后,返回的结果是删除的那个元素//(4)原数组也会发生变化//4.shift()它可以删除数组的第一个元素console.log(arr.shift());//redconsole.log(arr);//(1)shift是可以删除数组的第一个元素一次只能删除一个元素//(2)shift()没有参数//(3)shift完毕之后,返回的结果是删除的那个元素//(4)原数组也会发生变化
案例:筛选数组
//有一个包含工资的数组[1500,1200,2000,2100,1800],要求吧数组中工资超过2000的删除,剩余的放到新数组里面vararr=[1500,1200,2000,2100,1800];varnewArr=[];for(vari=0;i<arr.length;i++){if(arr[i]<2000){//newArr[newArr.length]=arr[i];newArr.push(arr[i]);}}console.log(newArr);
4数组排序
//数组排序//1.翻转数组vararr=['red','white','blue'];arr.reverse();console.log(arr);//2.数组排序(冒泡排序)vararr1=[2,5,77,4,7,11,1];arr1.sort(function(a,b){//returna-b;//升序的顺序排列returnb-a;//降序的顺序排列});console.log(arr1);
5数组索引方法
//返回数组元素索引号方法indexOf(数组元素)作用就是返回该数组元素的索引号从前面开始查找//它只返回第一个满足条件的索引号//它如果在该数组里面找不到元素,则返回的是-1vararr=['red','green','blue','white','bule'];console.log(arr.indexOf('blue'));//2console.log(arr.indexOf('black'));//-1//返回数组元素索引号方法lastIndexOf(数组元素)作用就是返回该数组元素的索引号从后面开始查找vararr=['red','green','blue','white','blue'];console.log(arr.lastIndexOf('blue'));//4
案例:数组去重
//数组去重['c','a','z','a','x','a','x','c','b']要求去除数组中重复的元素//1.目标:把旧数组里面不重复的元素选取出来放到新数组中,重复的元素只保留一个,放到新数组中去重//2.核心算法:我们遍历旧数组,然后拿着旧数组元素去查询新数组,如果该元素在新数组里面没有出现过,我们就添加,否则不添加//3.我们怎么知道该元素没有存在?利用新数组.indexOf(数组元素)如果返回是-1就说明新数组里面没有该元素//封装一个去重的函数unique独一无二的functionunique(arr){varnewArr=[];for(vari=0;i<arr.length;i++){if(newArr.indexOf(arr[i])===-1){newArr.push(arr[i]);}}returnnewArr;}vardemo=unique(['c','a','z','a','x','a','x','c','b'])vardemo1=unique(['red','blue','blue'])console.log(demo);console.log(demo1);
6数组转换为字符串
//数组转换为字符串//1.toString()将我们的数组转换为字符串vararr=[1,2,3];console.log(arr.toString());//1,2,3//2.join(分隔符)vararr1=['green','blue','red'];console.log(arr1.join());//green,blue,redconsole.log(arr1.join('-'));//green-blue-redconsole.log(arr1.join('&'));//green&blue&red方法名说明返回值concat()连接两个或多个数组,不影响原数组返回一个新的数组slice()数组截取slice(begin,end)返回被截取项目的新数组splice()数组删除splice(第几个开始,要删除个数)返回被删除项目的新数组 注意,这个会影响原数组
slice()和 splice()目的基本相同
字符串对象
1基本包装类型
为了方便操作基本数据类型,JavaScript还提供了上特殊的引用类型:String、Number和Boolean。
基本包装类型就是把简单数据类型包装称为复杂数据类型,这样基本数据类型就有了属性和方法。
//基本包装类型varstr='andy';console.log(str.length);//对象才有属性和方法复杂数据类型才有属性和方法//简单数据类型为什么会有length属性?//基本包装类型:就是把简单的数据类型包装称为了复杂数据类型//(1)把简单数据类型包装为复杂数据类型vartemp=newString('andy');//(2)把临时变量的值给strstr=temp;//(3)销毁这个临时变量temp=null;
2字符串的不可变
指的是里面的值不可变,虽然看上去可以改变内容,但其实是地址变了,内存中新开辟了一个内存空间。
//字符串的不可变性varstr='andy';console.log(str);str='red';console.log(str);//当重新给str赋值的时候,常量'andy'不会被修改,依然在内存中//重新给字符串赋值,会重新在内存中开辟空间,这个特点就是字符串的不可变//由于字符串的不可变,在大量拼接字符串的时候会有效率问题//因为我们字符串的不可变所以不要大量的拼接字符串varstr='';for(vari=1;i<=100000000;i++){str+=i;}console.log(str);//这个结果需要花费大量时间来显示,因为需要不断的开辟新的空间
3根据字符返回位置
字符串所有的方法,都不会修改字符串本身(字符串是不可变的),操作完成会返回一个新的字符串。
方法名说明indexOf('要查找的字符',开始的位置)返回指定内容在字符串中的位置,如果找不到就返回-1;开始的位置是indlastex索引号lastIndexOf()从后往前找,只找第一个匹配的//字符串对象根据字符返回位置str.indexOf('要查找的字符',[起始的位置])varstr='改革春风吹满地,春天来了';console.log(str.indexOf('春'));console.log(str.indexOf('春',3));//从索引号是3的位置开始往后查找
案例:返回字符位置
//查找字符串'abcoefoxyozzopp'中所有o出现的位置以及次数//核心算法:先查找第一个o出现的位置//然后只要indexOf返回的结果不是-1就继续往后查找//因为indexOf只能查找到第一个,所以后面的查找,一定是当前索引加1,从而继续查找varstr='abcoefoxyozzopp';varindex=str.indexOf('o');varnum=0;//console.log(index);while(index!==-1){console.log(index);num++;index=str.indexOf('o',index+1);}console.log('o出现的次数是'+num);
//['red','blue','red','green','pink','red'],求red出现的位置和次数varstr=['red','blue','red','green','pink','red'];varindex=str.indexOf('red');varnum=0;//console.log(index);while(index!==-1){console.log(index);num++;index=str.indexOf('red',index+1);}console.log('red出现的次数是'+num);
4根据位置返回字符
获取指定位置处字符的ASCII码(index索引号)
str.charCodeAt(0)str[index]获取指定位置处字符HTML5,IE8+支持和charAt()等效//根据位置返回字符//1.charAt(index)根据位置返回字符varstr='andy';console.log(str.charAt(3));//y//遍历所有的字符for(vari=0;i<str.length;i++){console.log(str.charAt(i));}//2.charCodeAt(index)返回相应索引号的字符ASCII值目的:判断用户按下了哪个键console.log(str.charCodeAt(0));//97(a的ASCII码是97)//3.str[index]H5新增的console.log(str[0]);//a
案例:返回字符位置
//有一个对象来判断是否有该属性对象['属性名']varo={age:18}if(o['age']){console.log('里面有该属性');}else{console.log('没有该属性');}//判断一个字符串'abcoefoxyozzopp'中出现次数最多的字符,并统计其次数//o.a=1//0.b=1//0.c=1//o.o=4//核心算法:利用charAt()遍历这个字符串//把每个字符都存储给对象,如果对象没有该属性,就为1,如果存在了就+1//遍历对象,得到最大值和该字符varstr='abcoefoxyozzopp';varo={};for(vari=0;i<str.length;i++){varchars=str.charAt(i);//chars是字符串的每一个字符if(o[chars]){//o[chars]得到的是属性值o[chars]++;}else{o[chars]=1;}}console.log(o);
//2.遍历对象varmax=0;varch='';for(varkino){//k得到的是属性名//o[k]得到的是属性值if(o[k]>max){max=o[k];ch=k;}}console.log(max);//4console.log('最多的字符是'+ch);//最多的字符是o
5字符串操作方法
//字符串操作方法//1.concat('字符串1','字符串2'....)varstr='andy';console.log(str.concat('red'));//2.substr('截取的起始位置','截取几个字符');varstr1='改革春风吹满地';console.log(str1.substr(2,2));//第一个2是索引号的2从第几个开始第二个2是取几个字符
//1.替换字符replace('被替换的字符','替换为的字符')它只会替换第一个字符varstr='andyandy';console.log(str.replace('a','b'));//有一个字符串'abcoefoxyozzopp'要求把里面所有的o替换为*varstr1='abcoefoxyozzopp';while(str1.indexOf('o')!==-1){str1=str1.replace('o','*');}console.log(str1);//2.字符转换为数组split('分隔符')join把数组转换为字符串varstr2='red,pink,blue';console.log(str2.split(','));varstr3='red&pink&blue';console.log(str3.split('&'));
toUpperCase() //转换大写
toLowerCase() //转换小写
感谢你能够认真阅读完这篇文章,希望小编分享的“javascript中有没有内置对象”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。