文章目录
前言
什么是js内置对象,在js中数组又是如何声明、操作,字符串又有什么不同,如何获取时间,下面小夏都会一一说明。
一、js内置对象是什么?
- JavaScript中的对象分为3种: 自定义对象、内置对象、浏览器对象 前面两种对象是JS基础内容,属于ECMAScript;
- 第三个浏览器对象属于我们JS独有的,JS API讲解
- 内置对象就是指JS语言自带的一些对象,这些对象供开发者使用,并提供了一些常用的或是最基本而必要的功能(属性和方法)
- 内置对象最大的优点就是帮助我们快速开发 JavaScript提供了多个内置对象: Math、 Date、Array. string等
二、创建对象
内置对象同样是对象的一种,第一步就要了解什么是对象,然后如何让创建对象。
1.创建对象
字面量创建
代码如下(示例):
var obj={
name:'可可',
type:'阿拉斯加犬',
age:'5',
color:'棕红色',
skill:'bark,showFime',
hi:function(){
console.log('le');
}
}
new创建
var obj=new Object();
obj.age=19;
obj.name='鸣人';
obj.sex='男';
obj.skill='分身'
构造函数创建对象
初始化对象,可批量生成对象
构造函数(泛指–》图纸;)
对象(具体东西,根据图纸造的汽车)
function Hero(uname,utype,ublood,uattack){
this.name=uname;
this.type=utype;
this.blood=ublood;
this.attack=uattack;
this.gj=function(wt){
console.log(wt);
}
}
使用构造函数创建时一定要加new
var lp=new Hero('廉颇','力量',500,'近战')
2.遍历对象
用for 键 in 对象
代码如下(示例):
for(var k in lp){
console.log(k); //对象的属性
console.log(lp[k]); //对象的值
}
三、函数
反转数组
function reserves() {
var tmp=[];
for(var i=arguments.length-1;i>=0;i--){
tmp[tmp.length]=arguments[i]
}
return tmp;
}
排序(冒泡)
function sorts(a){
//var tmp;
var max=a[0];
for(i=0;i<a.length-1;i++){
for(j=0;j<a.length-i-1;j++){
if(a[j]<a[j+1]){
var tmp
tmp=a[j]
a[j]=a[j+1];
a[j+1]=tmp;
}
}
}
return a;
}
简易计算器
var a=prompt('1.加法运算\n2.减法运算\n3.乘法运算\n4.除法运算\n5.退出\n输入选项')
switch (a) {
case '1':
var s1=prompt('输入第一个数')
var s2=prompt('输入第二个数')
var s=Number(s1)+Number(s2);
alert('结果为'+s)
var a=prompt('1.加法运算\n2.减法运算\n3.乘法运算\n4.除法运算\n5.退出\n输入选项')
case '2':
var s1=prompt('输入第一个数')
var s2=prompt('输入第二个数')
var s=Number(s1)-Number(s2);
alert('结果为'+s)
var a=prompt('1.加法运算\n2.减法运算\n3.乘法运算\n4.除法运算\n5.退出\n输入选项')
case '3':
var s1=prompt('输入第一个数')
var s2=prompt('输入第二个数')
var s=Number(s1)*Number(s2);
alert('结果为'+s)
var a=prompt('1.加法运算\n2.减法运算\n3.乘法运算\n4.除法运算\n5.退出\n输入选项')
case '4':
var s1=prompt('输入第一个数')
var s2=prompt('输入第二个数')
var s=Number(s1)/Number(s2);
alert('结果为'+s)
var a=prompt('1.加法运算\n2.减法运算\n3.乘法运算\n4.除法运算\n5.退出\n输入选项')
default:
break;
}
四、内置对象
接下来进入正题,只介绍一些常用的,更多的各位如果想要进一步了解可以打开MDN网址:https://developer.mozilla.org/zh-CN/
1、Math对象
封装数学对象
var myMath={
PI:Math.PI,
max:function(){
var max=arguments[0];
for (var i=1;i<arguments.length;i++){
if(arguments[i]>max){
max=arguments[i]
}
}
return max;
},
min:function(){
var min=arguments[0];
for (var i=1;i<arguments.length;i++){
if(arguments[i]>min){
min=arguments[i]
}
}
return min;
}
}
绝对值
console.log(Math.abs(-10));
取整
- floor:向下取整
- ceil:向上取整
- round:四舍五入
随机数random()–>取0-1随机小数
随机函数编写
function getRandom(min,max) {
return Math.floor(Math.random()*(max-min+1))+min
}
随机点名
function name(min,max) {
return Math.floor(Math.random()*(max-min+1))+min
}
var arr=['李世石','杨欢欢','里斯','银行家']
console.log(arr[name(0,arr.length-1)]);
猜数字
function guess(min,max){
return Math.floor(Math.random()*(max-min+1))+min;
}
var s1=guess(1,10);
console.log(s1);
var us;
var us=prompt('请输入猜的数字');
while (us!=s1) {
if(us>s1){
alert('猜大了')
us=prompt('请输入猜的数字');
}else if(us<s1){
alert('猜小了');
us=prompt('请输入猜的数字');
}
}
alert('猜对了');
2、Date
声明对象
var date=new Date;
获取月份(返回月份小一个月)
console.log(date.getMonth+1); //返回月份小一个月
日期格式化
year=date.getFullYear();
month=date.getMonth()+1;
dates=date.getDate();
var arr=['星期天','星期一','星期二','星期三','星期四','星期五','星期六']
day=date.getDay(); /// 周一返回的是1,周六返回的是6,但是周日返回的是0
获取时分秒
function getTime(){
var date=new Date;
hous=date.getHours();
hous =hous<10?'0'+hous:hous;
minite=date.getMinutes();
minite=minite<10 ?'0'+minite:minite;
miao=date.getSeconds();
miao=miao<10 ?'0'+miao:miao;
return hous+':'+minite+':'+miao;
}
倒计时
function timeDown(time) {
var nowTime = +new Date();
var uTime = +new Date(time);
var timeResult=(Number(uTime)-nowTime)/1000
return '倒计时'+parseInt(timeResult/60/60/24)+':'+
parseInt(timeResult/60/60%60)+':'+parseInt(timeResult/60%60)+':'+
parseInt(timeResult%60)
}
3、Array
声明Array数组对象时,最常使用的是字面量
var arr = [1,2,3,4]
是否为数组
console.log(arr instanceof Array);
console.log(Array.isArray(arr));
添加元素
1、push() 在数组末尾添加元素
- push是可以给数组追加新的元素
- push()参数直接写数组元素就可以了
- push完毕之后,返回的结果是新数组的长度
- 原数组也会发生变化
arr.push(7,'pink');
console.log(arr); // [1, 2, 3, 4, 7, 'pink']
- unshift在我们数组的开头添加一个或者多个数组元素
- unshift是可以给数组追加新的元素
- unshift()参数直接写数组元素就可以了
- unshift完毕之后,返回的结果是新数组的长度
- 原数组也会发生变化
arr.unshift('front',0)
console.log(arr); //['front', 0, 1, 2, 3, 4, 7, 'pink']
删除元素
pop() :删除最后一个元素
arr.pop()
筛选数组
法一:
var arr=[150,1200,2000,2100,1800]
arr.sort()
for(var i=arr.length-1;i>=0;i--){
if (arr[i]>=2000) {
arr.pop();
}
}
console.log(arr);
法二:
var arr=[1500,1200,2000,2100,1800]
var new_arr=[];
for(var i=0;i<arr.length;i++){
if(arr[i]<2000){
new_arr.push(arr[i])
}
}
反转数组
arr.reverse()
排序
arr.sort(function(a,b){
return a-b; //升序
//降序
//return b-a;
})
查看索引
indexOf:数组中查找给定元素的第一个索引,如果存在返回索引号如果不存在,则返回-1。
console.log(arr.indexOf(1500));
lastIndexOf:在数组中的最后一个的索引,如果存在返回索引号如果不存在,则返回-1。但索引号是不变的
console.log(arr.lastIndexOf(2100));
数组去重
1.目标:把旧数组里面不重复的元素选取出来放到新数组中,重复的元素只保留一个,放到新数组中去重。
2.核心算法:我们遍历旧数组,然后拿着旧数组元素去查询新数组,如果该元素在新数组里面没有出现过,我们就添加,否则不添加。
3.我们怎么知道该元素没有存在?利用新数组.indexOf(数组元素)如果返回时-1就说明新数组里面没有改元素
var arr =['a','z','a','c','b','c','z']
var new_arr=[];
for(var i=0;i<arr.length;i++){
if(new_arr.indexOf(arr[i])==-1){
new_arr.push(arr[i])
}
}
数组转为字符串
join()
var arr=['pink','red','blue']
console.log(arr.join('%20'));
统计重复元素个数
var arr =['a','z','a','c','b','c','z']
arr.join();
var index=arr.indexOf('z');
var i=0
while (index!=-1) {
console.log(index);
index=arr.indexOf('z',index+1)
i++;
}
console.log(i);
4、String字符串
判断一个字符串 ‘abcoefoxyozzopp’中出现次数最多的字符,并统计其次数。
核心算法:利用charAt(遍历这个字符串)
把每个字符都存储给对象,如果对象没有该属性,就为1,如果存在了就+1/遍历对象,得到最大值和该字符
var str = 'abcoefoxyozzopp'
var o={}
for(var i=0;i<str.length;i++){
var index = str.charAt(i)
if(o[index]){
o[index]++;
}else{
o[index]=1;
}
}
//遍历对象
var max=0;
for (k in o) {
if(o[k]>max){
max=o[k];
ch=k;
}
}
console.log(k+':'+max);
切割字符串
substr(start,length):从start位置开始(索引号) , length取的个数重点记住这个
slice(start, end):从start位置开始,截取到end位置,end取不到(他们俩都是索引号)
substring(start, end):从start位置开始,截取到end位置,end取不到基本和slice相同但是不接受负
全部替换
while(str.indexOf('o')!==-1){
str=str.replace('o','%') //要赋值,不然会死循环
}
console.log(str);
console.log(str.split(''));
作业
var str='ajshsajsnkdkaaajjjj1111223'
console.log(str.length);
console.log(str.charAt(0,3));
console.log(str.indexOf('i'));
console.log(str.replace('a','*'));
console.log(str.slice(1,5));
var o={};
for(var i=0;i<str.length;i++){
var chars = str.charAt(i);
if(o[chars]){
o[chars]++;
}else{
o[chars]=1;
}
}
var max=0,ch='';
for(k in o){
if(o[k]>max){
max=o[k]
ch=k;
}
}
console.log(ch+':'+max);
总结
本文对于对象,数组以及js内置对象做了简单总结。也希望对各位有一定的帮助