JavaScript内置对象详解

在 JavaScript 中,对象主要分为三种类型:自定义对象、内置对象和浏览器对象。前两者属于 ECMAScript 的基础内容,而浏览器对象则是 JavaScript 独有的部分。

内置对象是 JavaScript 语言自带的对象,为开发者提供了一系列常用且基础必要的功能,以属性和方法的形式呈现。开发者无需了解其内部实现细节,可直接使用,极大地提高了开发效率。JavaScript 提供了多个内置对象,如 Math、Date、Array、String、Boolean、Number 等。

一、Math 对象

Math 对象较为特殊,它并非构造函数,而是一个工具类,无需创建对象实例即可直接使用。其内部封装了丰富的数学运算相关的属性和方法。

  • 属性
    • Math.PI:表示圆周率,是一个固定的数学常数。
  • 方法
    • Math.abs(x):计算并返回参数x的绝对值。例如,Math.abs(-5)的结果为5
    • Math.ceil(x):对参数x向上取整,只要小数部分不为0,整数部分就自动加1。如Math.ceil(2.1)的结果是3
    • Math.floor(x):对参数x向下取整,直接舍去小数部分。例如,Math.floor(2.9)的结果为2
    • Math.round(x):对参数x进行四舍五入取整。特别地,当小数部分为.5时,会往大的方向取整。比如Math.round(1.5)的结果是2Math.round(-1.5)的结果是-1
    • Math.random():生成一个大于等于0且小于1的随机数,取值范围是[0, 1)。若要生成一个0x之间的随机数,可以使用Math.round(Math.random() * x);若要生成一个xy之间的随机数,则可使用Math.floor(Math.random() * (y - x + 1) + x) 。
    • Math.max(num1, num2,...):获取传入的多个数字中的最大值。例如,Math.max(3, 7, 2)的结果为7
    • Math.min(num1, num2,...):获取传入的多个数字中的最小值。例如,Math.min(5, 1, 9)的结果为1
    • Math.pow(x, y):返回xy次幂。例如,Math.pow(2, 3)的结果为8
    • Math.sqrt(x):对参数x进行开方运算。例如,Math.sqrt(16)的结果为4

课堂小练习

编写一个程序,随机生成一个 1 - 10 之间的数字,让用户输入一个数字进行猜测。如果用户输入的数字大于随机数,提示 “数字大了,继续猜”;如果小于随机数,提示 “数字小了,继续猜”;如果等于随机数,提示 “猜对了,结束程序”。

var trueNum = Math.floor(Math.random() * 10 + 1);

var num = +prompt("请输入数字");

console.log(trueNum);

while (true) {

    if (trueNum < num) {

        alert("大了");

        num = +prompt("请输入数字");

    } else if (trueNum > num) {

        alert("小了");

        num = +prompt("请输入数字");

    } else {

        alert("恭喜你");

        break;

    }

}

二、Date 对象

在 JavaScript 中,Date对象是一个构造函数,用于处理日期和时间相关的操作。使用时必须先进行实例化。

  • 创建 Date 对象
    • 直接使用构造函数:创建一个封装当前代码执行时间的Date对象。例如:

var d = new Date();

  • 创建指定时间的对象:通过在构造函数中传递表示时间的字符串或数字作为参数来创建。日期的格式有以下几种写法:

var d2 = new Date("10/23/2023 9:00:00");//字符串型

var d4 = new Date("2023 - 11 - 09 8:59:00");//字符串型

var d3 = new Date(2023, 10, 09);//数字型,注意月份从0开始,这里10表示11月

  • 时间对象的方法
    • getFullYear():获取当前日期对象的年份,返回一个四位数字。
    • getMonth():获取当前时间对象的月份,返回值范围是0 - 11,其中0表示1月,1表示2月,以此类推。若要得到实际月份,需将返回值加1
    • getDate():获取当前日期对象是几号,返回值范围是1 - 31
    • getDay():获取当前日期对象是周几,返回值范围是0 - 6,其中0表示周日,1表示周一,6表示周六。
    • getHours():获取当前小时数,返回值范围是0 - 23
    • getMinutes():获取当前分钟数,返回值范围是0 - 59
    • getSeconds():获取当前秒钟数,返回值范围是0 - 59
    • 时间戳相关方法
      • getTime():获取当前日期对象的时间戳,即从格林威治标准时间的 1970 年 1 月 1 日 0 时 0 分 0 秒到当前日期所花费的毫秒数。
      • Date.now():获取当前代码执行时的时间的时间戳,这是 HTML5 新增的方法。
      • valueOf():获取当前日期对象的时间戳,与getTime()方法返回值相同。

var nowTime = new Date();

//获取当前的时间戳(4种方法)

var time = +new Date();

var time1 = Date.now();//h5新增的

var time2 = nowTime.valueOf();

var time3 = nowTime.getTime();

//利用时间戳来测试代码的执行的性能

var start = Date.now();

// 这里可以放置需要测试性能的代码

var end = Date.now();

// console.log("执行了" + (end - start));

课堂小练习:自制一个倒计时

// 封装倒计时函数

function countDown(time) {

    var nowTime = +new Date(); //当前时间的毫秒数

    var inputTime = +new Date(time); //输入时间的毫秒数

    var times = (inputTime - nowTime) / 1000; //输入时间与当前时间的秒数

    var d = parseInt(times / 60 / 60 / 24); //天

    var h = parseInt((times / 60 / 60) % 24); //时

    h = h < 10? "0" + h : h;

    var m = parseInt((times / 60) % 60); //分

    m = m < 10? "0" + m : m;

    var s = parseInt(times % 60); //当前的秒

    s = s < 10? "0" + s : s;

    return "剩余时间: " + d + "天" + h + "时" + m + "分" + s + "秒";

}

var res = countDown("2023/9/24");

console.log(res);

三、基本包装类

在 JavaScript 中,数据类型分为基本数据类型和引用数据类型。基本数据类型包括StringNumberBooleanNullUndefined;引用数据类型主要是Object

  • 包装类

JavaScript 提供了三个包装类,可将基本数据类型转换为对象。

    • String():将基本数据类型字符串转换为String对象。
    • Number():将基本数据类型数字转换为Number对象。
    • Boolean():将基本数据类型布尔值转换为Boolean对象。

在实际应用中,通常不会使用基本数据类型的对象,因为在进行某些比较操作时,可能会产生不可预估的结果。

//创建一个Number类型的对象

var num = new Number(3);

var str = new String("hello");

var bool = new Boolean(true);

num.hello = "abc你好";

console.log(typeof num); //object

console.log(num.hello); //abc你好

需要注意的是,方法和属性只能添加给对象,不能直接添加给基本数据类型。当对基本数据类型的值调用属性和方法时,浏览器会临时使用包装类将其转换为对象,然后再调用对象的属性和方法,调用完成后,又会将其转换回基本数据类型。

var s = 123;

s = s.toString();

console.log(s, typeof s);

  • 字符串方法
    • length属性:用于获取字符串的长度。例如:

var str = "hello";

/* 在底层字符串是以字符数组的形式保存的 ["h","e","l","l","o"] */

console.log(str.length); //5

  • charAt(index):返回字符串中指定位置的字符,根据索引获取指定字符。例如:

var str = "hello";

var res = str.charAt(0); //h

console.log(str[0]); //h,这种方式也能获取指定位置字符

  • concat(str1, str2,...):用于连接两个或多个字符串,作用与+运算符类似。例如:

var str = "hello";

res = str.concat(",你好", ",再见"); //hello,你好,再见

  • indexOf(searchValue, [start]):检索字符串中是否含有指定内容。如果找到,返回该内容第一次出现的索引;若未找到,则返回-1start参数可选,用于指定开始查找的位置,默认从字符串开头开始查找。例如:

var str = "hello";

res = str.indexOf("p"); //-1

  • lastIndexOf(searchValue, [start]):用法与indexOf()类似,不同之处在于它是从字符串的末尾开始向前查找。例如:

var str = "hello";

res = str.lastIndexOf("l"); //3

  • slice(start, [end]):从字符串中截取指定的内容,不会影响原字符串,而是返回截取到的新字符串。参数start表示开始位置的索引(包括开始位置),end表示结束位置的索引(不包括结束位置)。如果省略end参数,则会截取从start位置到字符串末尾的所有内容。也可以传递负数作为参数,负数表示从字符串末尾开始计算的位置。例如:

var str = "hello";

res = str.slice(0, 2); //he

  • substring(from, [to]):用于截取字符串,与slice()方法类似。参数from表示开始位置的索引(包括开始位置),to表示结束位置的索引(不包括结束位置)。若省略to参数,则会截取从from位置到字符串末尾的所有内容。与slice()不同的是,该方法不能接收负值作为参数,如果传递了负值,则默认使用0。而且当to小于from时,它会自动调整参数的位置,将两个参数交换。
  • substr(start, length):用于截取字符串。参数start表示截取开始位置的索引,length表示截取的长度。例如:

var str = "hello";

res = str.substr(0, 3); //hel

  • split(delimiter, [limit]):将一个字符串拆分为一个数组。delimiter参数指定拆分的分隔符,limit参数可选,用于指定返回数组的最大长度。如果传递一个空字符串作为delimiter,则会将每个字符都拆分为数组中的一个元素。例如:

var str = "abc,bcd,efg,hij";

res = str.split(",");

  • replace('被替换的字符', '替换为的字符'):用于替换字符串中指定的字符,只会替换第一次出现的指定字符。
  • toUpperCase():将字符串中的所有字符转换为大写形式并返回新字符串。
  • toLowerCase():将字符串中的所有字符转换为小写形式并返回新字符串。

var str = "ABCDEFG";

res = str.toLowerCase();

console.log(res);

课堂小练习

  1. 查找字符串中所有指定字符出现的位置以及次数:查找字符串 "adcdserddsfehdsd" 中所有d出现的位置以及次数。

//1、查找字符串"adcdserddsfehdsd"中所有d出现的位置以及次数

var str = "adcdserddsfehdsd";

var index = str.indexOf("d");

var num = 1;

while (index!== -1) {

    console.log(index);

    index = str.indexOf("d", index + 1);

    num++;

}

console.log('num:' + num);

  1. 判断字符串中出现次数最多的字符,并统计其次数:判断字符串 "adcdserddsfehdsd" 中出现次数最多的字符,并统计其次数。

//2、判断一个字符串"adcdserddsfehdsd"中出现次数最多的字符,并统计其次数

// 思路:

//   利用charAt()遍历这个字符串

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

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

var str = "adcdserddsfehdsd";

var obj = {};

var max = 0;

var ch = '';

for (var i = 0; i < str.length; i++) {

    var chars = str.charAt(i);

    if (obj[chars]) {

        obj[chars]++;

    } else {

        obj[chars] = 1;

    }

}

for (var j in obj) {

    if (obj[j] > max) {

        max = obj[j];

        ch = j;

    }

}

console.log("max:" + max, "值:" + ch);

  1. 替换字符串中所有指定字符:有一个字符串 "adcdserddsfehdsd",把其中的所有的d替换成-

var str = "adcdserddsfehdsd";

var newStr = str.replace(/d/g, '-');

console.log(newStr);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值