【JavaScript】内置对象

一、内置对象概念

  • JavaScript中对象分为三种:自定义对象、内置对象、浏览器对象。

  • 前面两种对象是JS基础内容,属于ECMASScript;第三个浏览器对象属于我们JS独有的。

  • 内置对象:就是指js语言自带的一些对象,这些对象供开发者使用,并提供了一些常用的或者是最基本而必要的功能(属性和方法)。

  • JavaScript提供了很多个内置对象:Math,Date,Array,String等。

  • 查文档 MDN (http://developer.mozilla.org/zh-CN/)

二、Math对象

Math对象不是一个构造函数,所以不需要new来调用,而是直接使用里面的属性和方法。

1.Math的最大值属性

console.log(Math.PI);                 // 一个属性 圆周率
console.log(Math.max(1,99,3));        //99
console.log(Math.max(-1,-10));        //-1
console.log(Math.max(1,99,'pink'));   //NaN
console.log(Math.max());              //Infinity
1.封装自己的数学对象
var myMath = {
    PI3.141592653,
    max: function() {
        var max = arguments[0];
        for (var i = 1; i < arguments.length; i++)
            if (max < argumengts[i]) {
                max = arguments[i];
            }
        return max;
    }
    min: function() {
        var min = arguments[0];
        for (var i = 1; i < arguments.length; i++)
            if (min > argumengts[i]) {
                min = arguments[i];
            }
        return min;
    }
}
console.log(myMath.PI);
console.log(myMath.max(15,5,9,62));
console.log(myMath.min(15,5,9,62));

2.Math的绝对值属性

console.log(Math.abs(1));// 1
console.log(Math.abs(-1));// 1
console.log(Math.abs('-1'));// 隐士转换  会把字符串型-1转换为数字型
console.log(Math.abs('pink'));//NaN

3.三个取整方法

//向下取整 往小取整
console.log(Math.floor(1.1));// 1
console.log(Math.floor(1.9));// 1
//向上取整 往大的取
console.log(Math.ceil(1.1));// 2
console.log(Math.ceil(1.5));// 2
//四舍五入往 .5往数值大的取
console.log(Math.round(1.1));// 1
console.log(Math.round(1.5));// 2
console.log(Math.round(1.9));// 2
console.log(Math.round(-1.1));// -1
console.log(Math.round(-1.5));//这个结果是-1(数值大的取)

4.随机数方法random()

  • 返回一个随机小数【0,1)

  • 不跟参数

console.log(Math.random());
案例1:想要得到两个数之间的随机整数,并且包含这2个整数
function getRandom(min,max) {
    return Math.floor(Math.random() * (max - min + )) + min;
}
console.log(getRandom(1,10));
案例2:随机点名
var arr = ['张三','李四','南希','南佩','艾克','丽丽'];
console.log(arr[getRandom(0,arr.length-1)]);
案例3:猜数字游戏
function getRandom(min,max) {
    return Math.floor(Math.random() * (max - min + )) + min;
}
var suijishu = getRandom(1,10);
while (true) {//死循环
    var aa = prompt('你来猜?输入一个1~10的数字')
    if (suijishu > aa ) {
        console.log('宝贝,太小了');
        } else if (suijishu < aa) {
         console.log('宝贝,太大了');          
        } else {
           console.log('宝贝,真棒'); 
            break;
        }
}

三、日期对象Date()

是一个构造函数,必须使用new来调用创建日期对象

1.使用Date (如果没有参数则返回系统当前时间)

var Date = new Date();
console.log(Date);//返回系统当前时间

2.参数常用写法

①数字型 2020,08,13 ②字符串型 ‘2020-08-13 10:43:59’

var shijian = new Date(2020-08-18 8:8:8);
console.log(shijian);

3.日期格式化

在这里插入图片描述

var date = new Date();
console.log(date.getFullYear());//返回当前日期的年
console.log(date.getMonth() + 1);//返回当前日期的月(小一个月)
console.log(date.getDate());//返回当前几号
console.log(date.getDay());//返回当前星期 周日是0
console.log(date.getHours());
console.log(date.getMinutes());
console.log(date.getSeconds());

// 写一个完整规范的日期
var date1 = new Date();
var year = date1.getFullYear();
var month = date1.getMonth() + 1;
var Date = date1.getDate();
var Day = date1.getDay();
var arr = ['星期一','星期二','星期三','星期四','星期五','星期六','星期日'];
console.log('今天是' + year + '年' + month + '月' + Date + '日' + arr[Day] );

//封装一个函数返回当前时间
function getTime() {
    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.getSeconds();
    s = s < 10 ? '0' + s : s;
    return h + ':' + m +':' + s;
}
console.log(getTime());

4.获取当前时间总的毫秒数(距离1970年1月1日)

在这里插入图片描述

注意:3里面的D要大写

案例:倒计时

在这里插入图片描述

四、数组对象

1.检测是否为数组

①instanceof 运算符

②Array.isArray(参数)

var arr[];
var obj {};
console.log(arr instanceof Array);
console.log(obj instanceof Array);

console.log(Array.isArray(arr));
console.log(Array.isArray(obj));

2.添加删除数组元素方法

1.添加

push() / unshift() 在我们数组的 末尾 / 开头 添加一个或者多个数组元素

push() / unshift() 完毕之后,返回的结果是 新数组的长度

var arr = [1, 2, 3];
arr.push(4,'pink');
console.log(arr.push(4,'pink'));
console.log(arr);

console.log(arr.unshift('red','purple'));
console.log(arr);

2.删除

pop() / shift()它可以删除数组的最后一个元素 没有参数

pop() / shift()完毕之后,返回的结果是删除的那个元素

var arr = [1, 2, 3];
console.log(arr.pop());
console.log(arr);

console.log(arr.shift());
console.log(arr);

3.筛选数组

在这里插入图片描述

4.数组排序

1.翻转数组
var arr = ['pink', 'red', 'blue'];
arr.reverse();
console.log(arr);
2.数组排序(冒泡排序)
var arr1 = [13, 4, 77, 1, 7];
arr1.sort(function(a, b) {
// return a - b;   升序的顺序排列
   return b - a; //降序的顺序排列
});
console.log(arr1);

5.获取数组的索引

在这里插入图片描述

案例:数组去重

①目标:把旧数组里面不重复的元素选取出来放到新数组中,重复的元素只保留一个,放到新数组中去重。
②核心算法:我们遍历旧数组,然后拿着旧数组元素去查询新数组, 如果该元素在新数组里面没有出现过,我们就添加,否则不添加。
旧数组[‘c’,‘a’, ‘z’,‘a’, ‘x’, ‘a’, ‘x’, ‘c’, ‘b’]
新数组[]

    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([ 'c','a','z','a','x','a','x','C','b'])
     console.log(demo);

6.数组转换为字符串

在这里插入图片描述

7.扩展

方法名说明返回值
concat()连接两个或多个数组不影响原数组返回一个新的数组
slice()数组截取slice(begin, end)返回被截取项目的新数组
splice()数组删除splice(第几个开始,要删除个数)返回被删除项目的新数组注意,这个会影响原数组

slice()和splice0目的基本相同,重点看下splice()

五、字符串对象

1.基本包装类型

为了方便操作基本数据类型, JavaScript还提供了三个特殊的引用类型: String. Number和 Boolean。

基本包装类型:就是把简单数据类型包装成为复杂数据类型,这样基本数据类型就有了属性和方法。
在这里插入图片描述

2.字符串不可变

指的是里面的值不可变,虽然看上可以改变内容,但实是地址变了,内存中新开辟了一个内存空间。

var str = 'abc';
str = 'hello';
//当重新给str赋值的时候,常量'abc'不会被修改,依然在内存中
//重新给字符串赋值,会重新在内存中开辟空间,这个特点就是字符串的不可变
//由于字符串的不可变,在大量拼接字符串的时候会有效率问题
var str='';
for(var i = 0; i < 100000; i++){
str += i;
console.log(str); //这个结果需要花费大量时间来显示,因为需要不断的开辟新的空间

3.字符串位置

str.index0f( ‘要查找的字符’,起始的位置)

lastIndexOf() 同理

var str = '改革春风吹满地,春天来了';
console.log(str.index0f('春'));
console.log(str.indexOf('春',3)); //从索引号是3的位置开始往后查找
案例:返回字符串位置

查找字符串" abcoefoxyozopp"中所有o出现的位置以及次数

①核心算法:先查找第一个o出现的位置

②然后只要indexOf返回的结果不是-1就继续往后查找

③因为indexOf 只能查找到第一个,所以后面的查找,利用第二个参数,当前索引加1 , 从而继续查找

var str = "abcoefoxyozzopp";
var index = str.indexOf('o');
var num = 0;
while (index !== -1) {
    console.log(index);
    index = str.indexOf('o',index + 1);
    num++;
}
console.log('o出现的次数是' + num);

4.根据位置返回字符(重点)

方法名说明使用
charAt(index)返回指定位置的字符(index字符串的索引号)str. .charAt(0)
charCodeAt(index)获取指定位置处字符的ASCII码(index索引号)str.charCodeAt(O)
str[index]获取指定位置处字符HTML5, IE8+支持和charAt()等效

在这里插入图片描述

案例:判断一个字符串’abcoefoxyozzopp’中出现次数最多的字符,并统计其次数

①核心算法:利用charAt()遍历这个字符串

②把每个字符都存储给对象,如果对象没有该属性,就为1 ,如果存在了就+1

③遍历对象,得到最大值和该字符

//有一个对象来判断是否有该属性对象['属性名']
var0={
age: 18
}
if (o['sex']) {
    console.log('里面有该属性');
} else {
    console.log('没有该属性');
}
//案例
var str = 'abcoefoxyozzopp';
var = {};
for (var i = 0; i < str.length; i++) {
    var chars = str.charAt(i); // chars 是字符串的每一个字符
    if (o[chars]) { // o[chars] 得到的是属性值
        o[chars]++;
    } else {
        o[chars] = 1;
    }
}
console.log(o);
//2.遍历对象
var max = 0;
var ch = '';
for(varkino){
// k得到是属性名
// o[k]得到的是属性值
    if (o[k] > max) {
        max = o[k];
        ch = k;
    }
}
console.log(max);
console.log('最多的字符是' + ch);

5.字符串的操作方法(重点)

方法名说明
concat(str1,tr2,str3…)concat()方法用于连接两个或多个字符串。拼接字符串,等效于+, +更常用
substr(start,length)截取字符串,从start位置开始(索引号),length 取的个数重点记住这个
slice(start, end)从start位置开始,截取到end位置,end取不到(他们俩都是索引号)
substring(start, end)从start位置开始,截取到end位置,end取不到基本和slice 相同但是不接受负值
replace(str1,str2)替换字符,一次只替换一个字符
split(‘分隔符’)字符转换为数组
toUpperCase()转换大写
toLowerCase()转换小写
拼接和截取

在这里插入图片描述

替换字符

在这里插入图片描述

字符串转换为数组

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值