对象与函数


前言

什么是js内置对象,在js中数组又是如何声明、操作,字符串又有什么不同,如何获取时间,下面小夏都会一一说明。


一、js内置对象是什么?

  1. JavaScript中的对象分为3种: 自定义对象、内置对象、浏览器对象 前面两种对象是JS基础内容,属于ECMAScript;
  2. 第三个浏览器对象属于我们JS独有的,JS API讲解
  3. 内置对象就是指JS语言自带的一些对象,这些对象供开发者使用,并提供了一些常用的或是最基本而必要的功能(属性和方法)
  4. 内置对象最大的优点就是帮助我们快速开发 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内置对象做了简单总结。也希望对各位有一定的帮助

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值