JavaScript内置对象String & Math & Date


内置对象

  • JavaScript 中的对象分为3种:自定义对象 、内置对象、 浏览器BOM对象
  • 内置对象就是指 JS 语言自带的一些对象,这些对象供开发者使用,并提供了一些常用的或是最基本而必要的功能
  • JavaScript 提供了多个内置对象:Math、 Date 、Array、String等

String

字符串的不可变

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

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

charAt

通过下标获取字符串里的某个字符

字符串.charAt(下标);
//例子;
var str ="hello";
console.log(str.charAt(2));

charCodeAt(index)

获取指定位置处字符的ASCII码(index索引号)

concat

多个字符串拼接

var 变量名= 字符串.concat(字符串2,字符串3,字符串n);
//例子:
var str = "hello".concat("wor","ld");
console.log(str);     //helloworld

substr&subString

获取字符串中的一部分

subString结束下标不写,会将开始下标到字符串结束截取

 var 变量名 = 字符串.substr(开始下标,子字符串的字符数量)
var 变量名 = 字符串.substring(开始下标,结束下标(不包含));
//例子:
var str = "hello world";
//1. 获取 wor
 str.substr(6,3);
 str.substring(6,9)

slice

获取字符串中的一部分

var 变量名 = 字符串.slice(开始下标,结束下标(不包含));
//例子:
var str = "hello world";
//1. 获取 wor
 str.slice(6,9);
//2. 获取hello worl
 str.slice(0,10)

split

根据某个分割符号,将字符串转为字符串数组

字符串.split(分割符号);
//例子:将"1,2,3,4,5" 转为数组
var str = "1,2,3,4,5";
var arr = str.split(',');
console.log(arr);  //[1,2,3,4,5]

indexOf

查找某个字符在字符串中第一次出现的下标 没有找到会返回-1

字符串.indexOf(字符);
//例子: 
var index = "hello world".indexOf('o');
console.log(index);//4

lastIndexOf

查找某个字符在字符串中最后一次出现的下标 没有找到会返回-1

字符串.lastIndexOf(字符);
//例子: 
var index = "hello world".lastIndexOf('o');
console.log(index);  //  7

replace & replaceAll

完成字符串中某些字符的替换

字符串.replace("旧字符","新字符");
字符串.replaceAll("旧字符","新字符");
//例子:将"1-2-3-4-5"中的"-"换成"#"
//1. 只换第一个
var newStr= "1-2-3-4-5".replace('-','#');
//2. 换所有的
var newStr= "1-2-3-4-5".replaceAll('-','#');
//3. 去掉 字符串中所有的空格
var newStr= "1 2 3 4 5".replaceAll( ",");

trim

消除字符串两端的空白字符

字符串.trim();
//例子; 
var str = "  123  ".trim();
console.log(str);"123"

startsWith

判断某字符串是否以某些字符开头

var result=  字符串.startsWith('字符串');
//例子:判断hello world 是否以 he 开头
var result ="hello world".startsWith('he'); // true
var result ="hello world".startsWith('hello world'); // true
var result ="hello world".startsWith('world'); // false

endsWith

判断某字符串是否以某些字符结尾

var result=  字符串.endsWith('字符串');
//例子:判断hello world 是否以 rld 结尾
var result ="hello world".endsWith('rld'); // true
var result ="hello world".endsWith('world'); // true
var result ="hello world".endsWith('hello world'); // true

大小写转换

  • toUpperCase() 转换大写
  • toLowerCase() 转换小写

Date() 日期对象

  • Date 对象和 Math 对象不一样,他是一个构造函数,所以我们需要实例化后才能使用
  • Date 实例用来处理日期和时间

Date()方法的使用

  • 获取当前时间实例化

    var now = new Date( );
    
  • Date()构造 函数的参数

    • 若括号里面有时间,就返回参数里面的时间。
    • 例:日期格式字符串为2021-9-1,可以写成new Date('2021-9-1')或者 new Date('2021/9/1')

日期格式化

方法 说明 代码
getFullYear() 获取当前年份 dobj.getFullYear()
getMonth() 获取当前月份(0-11) dobj.getMonth()
getDate() 获取当天的日期 dobj.getDate()
getDay() 获取星期几(周日0到周六6) dobj.getDay()
getHours() 获取当前小时 dobj.getHours()
getMinutes() 获取当分钟数 dobj.getMinutes()
getSeconds() 获取当前秒钟 dobj.getSeconds()

日期格式化函数

  function getTime(format) {
        var now = new Date();
        //将YYYY转为当前的年份
        format = format.replace(/YYYY/g, now.getFullYear());
        //将MM转为当前的月份,本身api获取的0~11,所以要加1
        format = format.replace(/MM/g, now.getMonth() + 1);
        // 将DD转为当前日期
        format = format.replace(/DD/g, now.getDate());
        // 将hh转为当前小时数
        format = format.replace(/hh/g, now.getHours());
        //将mm转为当前分钟数
        format = format.replace(/mm/g, now.getMinutes());
        //将ss转为当前秒数
        format = format.replace(/ss/g, now.getSeconds());
        //将 E转为星期几,api得到的是0~6,0表示星期天
        var weekday = now.getDay();
        if (weekday == 0) {
            weekday = "天";
        } else if (weekday == 1) {
            weekday = '一';
        } else if (weekday == 2) {
            weekday = '二';

        } else if (weekday == 3) {
            weekday = '三';

        } else if (weekday == 4) {
            weekday = '四';

        } else if (weekday == 5) {
            weekday = '五';

        } else if (weekday == 6) {
            weekday = '六';
        }
        format = format.replace(/E/g, weekday);
        return format;
    };

    /*
    YYYY: 年份
    MM:月份
    DD: 日期
    hh :当前小时数
    mm: 当前分钟数
    ss: 当前秒数
    */
    // var str = getTime("YYYY/MM/DD hh:mm:ss "+'星期E' );

获取日期的毫秒数(时间戳)

  • data.valueOf( )
  • date.getTime( )
  • 简单写法: +new Date()
  • HTML5新增:有兼容性问题 Date.now()

得到现在距离1970.1.1 总的毫秒数

获取Date总的毫秒数 不是当前时间的毫秒数 而是距离1970年1月1号过了多少毫秒数*

倒计时封装

function countDown(time) {
    var nowTime = +new Date(); //没有参数,返回的是当前时间总的毫秒数
    var inputTime = +new Date(time); // 有参数,返回的是用户输入时间的总毫秒数
    var times = (inputTime - nowTime) / 1000; //times就是剩余时间的总的秒数
    var d = parseInt(times / 60 / 60 / 24); //天数
    d < 10 ? '0' + d : d;
    var h = parseInt(times / 60 / 60 % 24); //小时
    h < 10 ? '0' + h : h;
    var m = parseInt(times / 60 % 60); //分
    m < 10 ? '0' + m : m;
    var s = parseInt(times % 60); //秒
    s < 10 ? '0' + s : s;
    return d + '天' + h + '时' + m + '分' + s + '秒';
}
console.log(countDown('2021-12-20 18:29:00'));

Math对象

Math 对象不是构造函数,它具有数学常数和函数的属性和方法。跟数学相关的运算(求绝对值,取整、最大值等)可以使用 Math 中的成员。

  • Math.PI 圆周率

  • Math.floor() 向下取整

  • Math.ceil() 向上取整

  • Math.round() 四舍五入版 就近取整 注意 -3.5 结果是 -3

    四舍五入 其他数字都是四舍五入,但是5特殊,它往大了取*

  • Math.abs()绝对值

  • Math.max()/Math.min() 求最大和最小值

console.log(Math.PI);  
console.log(Math.max(1,99,3)); // 99

随机数random()

random()方法可以随机返回一个小数,其取值范围是[0,1) 左闭 右开

// 得到两个数之间的随机整数,并且包含这两个整数
function getRandom(min,max) {
    return Math.floor(Math.random() * (max - min + 1)) + min;
}
console.log(getRandom(1,10));

文章作者: 时光路人
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 时光路人 !
评论
  目录