目 录CONTENT

文章目录

常用内置对象

Administrator
2020-07-24 / 0 评论 / 2 点赞 / 13829 阅读 / 24984 字

常用内置对象

之前我们已经尝过了对象的创建,并且可以根据自己的需要创建自己所需要的对象。其实在JavaScript的编译器里面,有一些系统已经给我们定义好的内置对象供我们使用,现在我们就来了解一下它

Math对象

它量一个全局对象 ,量一个系统已经定义好的对象,不需要我们通过new的关键字来进行构造,直接拿来使用,主要的作用就是进行我们的数学运算

Math对象里面主要包含两个东西,一个是常数,一个是方法

常数

  • Math.PI圆周率,约于等 3.14
  • Math.E,自然对数的底数,约等于2.718
  • Math.LN10,10的自然对值,约等于2.302
  • Math.LN2,2的自然对值,约等 于0.693
  • Math.SQRT2,2的平方根,约等于1.414
  • Math.SQRT1_2,0.5的平方根,约等于0.707

这些常都不用特意的去记,用的时候瞟一眼就可以

方法

  1. 绝对值Math.abc()方法

    Math.abs(-200); 				//200
    Math.abs(200);					//200
    
  2. 四舍五入Math.round()方法

    Math.round(3.4);				//3
    Math.round(3.6);				//4
    

    注意Math.round()这个方法只能是四舍五入以后取整,如果要保留多位小数,则可以参照下面的方式

    var a = 3.1415926;
    //如果我现在希望保留3位小数的四舍五入,应该怎么办呢?
    Math.round(a * 1000) / 1000;
    
  3. Math.floor()向下取整,返回小于或等于这个数的大最大整数

    Math.floor(99.2);             //99
    Math.floor(15.7);             //15
    Math.floor(11);               //11
    
  4. Math.ceil()向上取整,返回大于或等于这个数的最小整数

    Math.ceil(99.2);              //100
    Math.ceil(15.7);             //16
    Math.ceil(11);               //11
    
  5. Math.pow(x,n)函数,取x的n次方的结果

    现在我们想得到1003的结果,应该怎么办呢

    var i = 100;
    var j  = 3;
    var i = 100;
    var j = 3;
    Math.pow(i,j);			//1000000
    
  6. Math.max()方法,用于求一系列数中的最大值

    Math.max(100,70,205);           //205
    

    之前在讲跨对象调用方法的时候,我们可以直接使用这个方法求出数组里面的最大值

    var arr = [100,405,678,346];
    Math.max.apply(Math,arr);			//678
    
  7. Math.min()方法 ,用于求一系列数中的最小值

    Math.min(100,70,205);           //70
    
    var arr = [100,405,678,346];
    Math.min.apply(Math,arr);			//100
    
  8. Math.sqrt(n)取数字n的平方根

    Math.sqrt(9);
    
  9. Math.random()获取0~1之间的一个随要数

    Math.random();
    //返回的随机数0.6147377410827926
    

    🤔思考:如果想返回指定范围的随机数又应该怎么办呢?例如我要返回0~9之间的随机数应该怎么办呢

    parseInt(Math.random() * 10);
    //这个时候得到的随机数是0~9之间的随机数
    

    小技巧:如果以后要取0到某一个区间的随机数,是可以使用下面的公式

    parseInt(Math.random() * num);   //num是具体的随机数范围,不包含num
    

上面我们已经学过了几种取整的操作,我们现在将这几种操作对比一下

image-20200512142505520

在对比的时候,我们发现其实的操作都很正常,在负数的操作里面也很正常,但是负数在进行Math.round()进行操作的时候要注意,它有以下几个步骤

  • 先调用Math.abs()把它变成正数
  • 再开始进行舍入的操作,但是这个时候的舍入是五舍六入操作了
  • 将舍入以后的结果再乘以-1就可以了

Date对象

JavaScript里面用来表述日期的对象,它可以获取系统的时间与日期,也可以手动的设置日期与时间。每次通过Date创建对象的时候默认都是当前时间

Date本身并不是一个对象(它与我们的Math不一样,Math本身就是一个对象,直接调用它的方法可以了),它只是一个构造函数

Date本身是一个构造函数,通过它可以得到对象

var d = new Date();		//得到当前时间
//Tue May 12 2020 14:42:24 GMT+0800 (中国标准时间)

我们也可以手动的去设置一个时间去创建,(它是通过构造函数接收参数的形式来完成的)

var d1 = new Date("2019-5-1 12:56:33");
//Wed May 01 2019 12:56:33 GMT+0800 (中国标准时间)

方法

  1. Date.now()方法,返回当前的时间。要注意,它返回的是一串数字,这个数字是时间戳,指的是从1970-1-1到现在的毫秒数

    var d = new Date();		//1589266135205
    

    拿到这个数字以后,这个数字就代表了你当前的时间

    var currentDate = new Date(1589266135205);
    //这样就得到了这个时间戳的具体时间了
    
  2. getFullYear()获取当前的年份的方法

    var d = new Date();			//当前时间
    d.getFullYear();			//2020
    
  3. getMonth()获取当前月份的方法

    一共有12个月,但是月份是0开始的

    d.getMonth();   //现在是2020-5-12
    //获取当前日期的月份,月份是从0开始的  所以得到的结果应该是4
    
  4. getDate()获取当前天数

    d.getDate();   //现在是2020-5-12
    //获取当前日期的天数,天数从1开始  所以得到的结果应该是12
    
  5. getDay()获取星期几

    d.getDay();		//现在是2020-5-12  星期二
    //得到的结果是2   从0开始的,星期天才是0
    
  6. getHours()获取小时数

    d.getHours();	//获取当前的小时数
    
  7. getMinutes()获取分钟

     d.getMinutes();   //获取当前时间的分
    
  8. getSeconds()获取秒钟

    d.getSeconds();   //获取当前时间的秒
    
  9. getMilliseconds()获取毫秒

    d.getMilliseconds();   //获取当前时间的毫秒
    

上面的几个方法都是获取get日期与时间的相关信息,与之相对应其实还有设置set的赋值方法

如果想设置一个日期的相关时间,我们可以调用相应的set方法就可以了

//这是当前时间 
var d = new Date();
//我希望改变它的年份
d.setFullYear(1997);
//改变月份
d.setMonth(11);     //设置为了12月
  1. toString()方法

    日期函数可以调用这个方法将日期转换成字符串,但是在转换的过程当中,我们要注意一些事项

    • toString()直接将日期对象转换成字符串
    • toDateString()只转日期部分为字符串
    • toTimeString()只转换时间部分为字符串
    d.toString();
    //Tue May 12 2020 14:48:55 GMT+0800 (中国标准时间)
    
    d.toDateString();		//Tue May 12 2020
    
    d.toTimeString();		//14:48:55 GMT+0800 (中国标准时间)
    

    我们一般情况下是很少直接使用toString()的方法

  2. toLocaleString()转换成本地时间,也就是你电脑下右角格式的时间

    toLocaleDateString()转换成本地的日期字符串

    toLocaleTimeString()转换成本地的时间字符串

    d.toLocaleString();			//2020/5/12 下午2:48:55
    d.toLocalDateString();		//2020/5/12
    d.toLocaleTimeString();			//下午2:48:55
    
  3. toGMTString()这个方法是将当前时间转换成0时区的时间

    var d = new Date();			//当前时区的当前时间
    d.toGMTString();			//Tue, 12 May 2020 07:32:07 GMT
    

😑 扩展:上面的12个方法都是操作日期的时候常用的方法 ,但是我们有一个操作也是经常会使用到的就两个日期相减或比较两个日期之间的间隔,怎么办呢?

针对时间相减的这种现象或业务逻辑问题,我们都是把时间转换成一个具体的数值(也就是我们在第一个方法里面提到的时间戳)

//第一个时间
var d1 = new Date("1997-4-8 12:22:45");
//第二个时间
var d2 = new Date("2020-5-12 15:30:00");

我如果想判断一下这两个时间相距多长时间应该怎么办呢???这个时候,我们要将这两个时间都转换成时间戳

而将一个时间对象转换成时间戳的方法就是getTime()

var d1Time = d1.getTime();		//860473365000
var d2Time = d2.getTime();		//1589268600000

现在这两个时间都变成数字了,那么我就可以进行相减的操作了

 var totalTime = d2Time - d1Time;	//这样就得到两个时间之间的毫秒数728795235000

最后我们可以将这个毫秒转换成我们所需的结果,例如转换成天数或年数

 var yearCount = parseInt(totalTime / 1000 / 60 / 60 / 24 / 365);

这个yearCount就是中间间隔多少年

延时调用与循环调用

延时调用也叫一次性定时器,循环调用也叫循环定时器,定时器可以把它理解成一个闹钟

延时调用

延时调用也就是相当于一个性次的闹钟,例如我们定义了一个闹钟,这个闹钟在多长时间以后去执行,但是要注意,这个闹钟只响应一次(只执行一次)

console.log("你打开了网页");

function sayHello(){
    console.log("标哥,快点,你锅里的菜糊了");
    console.log(new Date().toLocaleString());
}


//我们要让这个方法 隔10秒钟以后去执行

var timeId = setTimeout(sayHello,10000);
//第一个参数:代表就是时间到了以后,我们做什么事情
//第二个参数:是以毫秒为单位,10000就相当于10秒钟
//这个方法会返回一个定时器的编号,相当于闹钟的编号,我们后期可以通过这个编号去取消这个闹钟

通过上面的代码我们已经基本上掌握了延时调用的方法了

console.log("页面已打开");
//这是回调方法 
function abc(x, y) {
    console.log(x);
    console.log(y);
}

//我希望10秒钟以后调用上面的abc方法 ,然后向 abc方法里面传递参数  "标哥",666

var timeId = setTimeout(abc,10000,"标哥",666);
//从第三个参数开始,它就是向回调函数里面在传递参数了

注意:在工作当中,我们一般不会像上面写得这么麻烦,而直接使用匿名方法(之前给大家讲过,回调方法可以直接写成匿名方法的形式)一气呵成

var timerId setTimeout(function (x, y) {
    console.log(x);
    console.log(y);
}, 10000, "标哥", 666);

循环调用

循环调用与延时调用很相似,它就相当于于一个隔一段时间就去响一下的闹钟

循环定时器使用的是setInterval()这个方法,它与之前学过的setTimeout()保持一致,参数的用法也保持一致

  1. 第一个参数代表时间到了以后,我们要做的事情(调用的方法)handler
  2. 第二个参数代表隔多长时间做调用一次(也就是延时的时间 )timeout
  3. 从第三个参数开始就代表回调函数里面接收的参数arguments
function abc() {
    console.log("标哥哥,你好啊! " + new Date().toLocaleString());
}

var timeId = setInterval(abc, 1000);

同理,上面的代码也可以 使用匿名函数的形式去完成

var timeId = setInterval(function(userName){
    console.log("你好啊,"+userName+" "+ new Date().toLocaleString());
},1000,"标哥哥");
//第三个参数“标哥哥”是传递给回调函数给userName的

取消延时调用与循环调用

当我们设置了延时调用或循环调用以后如果想取消,怎么办呢?(相当于你定了一个闹钟,现在想取消这个闹钟怎么办)

之前在学习setTimeoutsetInterval的时候,我们告诉大家,这两个方法都会返回一个timerId,这个就是当前定时器的编号,我们可以通过这个定时器的编号去取消这个定时器

  1. clearTimeout(timerId)取消延时调用
  2. clearInterval(timerId)取消循环调用

包装对象

包装对象其实也属于内置对象

在我们之前讲数据类型的时候 ,我们已知道通过 typeof关键字可以检出以下几种数据类型

  • string字符串类型
  • number数字类型
  • boolean布尔类型
  • undefined未定义类型
  • object对象类型
  • function方法类型

在上面用来表述类型的关键字里同,我们发现它们的首字母都是小写的。但是我们又发现在JavaScript里面有一个与之相对应的定首字母大写的英语文单词

string----String,number----Number,boolean----Boolean,object----Object,function-----Function

概念:所以的包装对象其实指的就是String,Number以及Boolean 等这些对象

这三个包装对象其实就是为之前的三种基本数据类型来服务的,因为有了这三个包装对象以后,字符串,数字,布尔类型就可以像对象一样去操作了

var str = "hello";
str.toUpperCase();			//像对象一样调用方法

var flag = true;
flag.toString();			//像对象一样调用方法

var a = 123;
a.toString();

上面的代码这是为什么呢?

str.__proto__===String.prototype;
flag.__proto__===Boolean.prototype;
a.__proto__===Number.prototype;

之前在学过原型的时候,我们了解到一点,某一个对象的__proto__就指向了它的构造函数里面的prototype

也在也就是说str是构造函数String实例化的对象,flag是构造函数Boolean实例化的对象,a就是构造函数Number实例化的对象

所以我们定义基本数据类型本质其实是下面这个操作

var str = "hello";
//相当于
var str = new String("hello");

var flag = true;
//相当于
var flag = new Boolean(true);

var a  = 123;
//相当于
var a  = new Number(123);

所以我们在定义基本数据类型的时候,其实也相当于在定义一个对象,只是它是一个特殊的对象叫包装对象,它是使用String,Number,Boolean将这个基本数据类型包装在了里面

既然是一个对象,那么就肯定可以像对象一样调用方法与属性了,所以上面的代码中str.toUpperCase()这就合理了

它们既然可以像对象去操作,那么必须会有方法与属性,那么我们就来看一下它们的方法的属性

String字符串对象

字符串是JavaScript当中最常见的一种对象,也是使用得最多的一种包装对象。这个包装对象的作用就是将字符串包裹起来,这样字符串就可以像对象一样去操作了

字符串对象其实可以把它理解成一个特殊的字符数组,它具备数组的所有特性,可以使用length来表示字符串的长度,也可以使用索引来获取字符串中的某一个字符(仅仅只能获取,不能设置),同时字符串也可以转换成数组,数组也可以转换成字符串

var str = "hello-world";
  1. length属性

    返回当前字符串的长度,它不能赋值

    str.length;		//11;
    
  2. 索引取值

    它可以像数组一样通过索引取里面的某一个字符,但是不能赋值

    str[0];			//h
    str[5];			//-
    
  3. concat()拼接字符串,返回一个新的字符串,其实这个方法根本没怎么用,因为我们的字符串拼接使用的是+来拼接,这样更方便

    var str  = "hello world";
    var abc = "标哥哥";
    var newStr = str.concat(abc);   //hello world标哥哥
    
    //其实可以直接使用+完成字符串拼接
    var newStr = str + abc;
    
  4. slice(start?,end?)方法

    用于截取当前的字符串形成一个新的字符串,它的用法与数组的用法是一个的

    开始索引不能大于结束索引,并且截取的时候不包含结束索引,只截取到结束索引的前一个

    str.slice(1,4);			//ell
    str.slice(3,-1);		//lo-worl
    str.slice(-4,-1);		//orl
    str.slice(5);			//-world   从第5个索引,截取到最后一个
    
  5. substring(start,end?)方法

    这个方法和上面的slice的方法是一样的,也是用于截取字符串,返回一个新的字符串

    start代表开始索引,end代表结束索引,但是不包含结束索引这个元素,它是截取到结束索引的前一个

    str.substring(1,4);		//ell
    str.substring(5);		//-world
    

    这个方法我们不建立使用负数做为参数去截取

  6. substr(start,length?)方法

    这个方法也是用于截取字符串,但是它的参数与上面两个都不相同

    start代表开始索引,length代表截取字符串的长度

    str.substr(1,5);			//ello-
    str.substr(3);				//lo-world   从索引为3的位置开始,截取到最后一个
    
  7. indexOf/lastIndexOf查找匹配的字符串,与数组里面的用法保持一致,找到以后返回索引 ,找不到返回-1

    var str = "七八个星天外,两三点雨山前";
    str.indexOf("雨");			//10
    str.indexOf("星");			//3	
    
  8. split()方法 ,将字符串按照指字符隔开变成数组

    var str = "hello-world";
    str.split("-");			//["hello","world"]
    //如果我们希望一个一个字符隔开,可以使用下面方法
    str.split("");         //["h", "e", "l", "l", "o", "-", "w", "o", "r", "l", "d"]
    

    其实这个方法与数组里面的join() 是一个反向的操作

    var arr1 = ["hello","world"];
    arr1.join("-");			//hello-world
    var arr2 = ["h", "e", "l", "l", "o", "-", "w", "o", "r", "l", "d"];
    arr2.join("");			//hello-world
    

以上8个方法都可以与之前的数组产生关系,与数组或多或少都都有一些联系,所以我们认为字符串是一个特殊的字符数组

  1. charAt(index)通过索引来取字符串里面的某一个字符

    var str  = "hello-world";
    str.charAt(4);			//o
    str[4];					//o
    
  2. charCodeAt(index)通过索引获取字符串里面的某一个字符的unicode编码

    var str = "我爱你";
    str.charCodeAt(0);			//25015  字符"我"的unicode码
    str.charCodeAt(2);			//20320  字符"你"的unicode码 
    

    unicode编码一般是0~65535之间

  3. startsWith()判断某个字符串是否以什么开始

    var str = "我爱北京天安门";
    str.startsWith("我");			//true
    

    这个方法到后期应用是非常多

  4. endsWith()判断某个字符串是以否是什么结尾

    var str = "我爱北京天安门";
    str.startsWith("天安门");		 //true
    
    var url = "https://www.softeem.com";
    url.endsWith(".com");		   //true
    
  5. includes()判断是否包含某个字符串,包含就是true,不包含是false

    var str = "我爱北京天安门";
    str.includes("北京");			//true
    

    其实像这种判断是否包含的方法我们可以使用indexOf/lastIndexOf也可以

    str.indexOf("北京");			//2
    

    如果得到的结果不是-1说明就存在,如果结果是-1就说明不存在

  6. trim()/trimLeft()/trimRight()用于去除字符串左右的空格,返回去除空格以后的字符串

    trimLeft()去除字符串左边的空格

    trimRight()去除字符串右边的空格

    trim()去除字符串左右的空格

    var str = "   我爱北京天安门   ";
    str.trimLeft();
    str.trimRight();
    str.trim();
    

    现在有下面字符串

    var str = "  我  爱  北  京  天  安  门   "
    

    有没有什么办法可以去掉左右空格以及中间的空格呢?

  7. replace()方法,查找符合要求的字符串,然后替换成指定的字符串,并返回替换以后的结果

    请各位同学时刻都要注意,第一个参数并不完全指字符串,而是一个正则表达式

    var s1 = "我爱你";
    s1.replace("爱","恨");		//我恨你
    

    这个方法的第一个参数代表我们要查找近了符串,但是要注意,这个并不仅仅只接收字符串

    var s2 = "我爱你,你爱我吗?";
    s2.replace("爱","恨");			//我恨你,你爱我吗?"
    

    这个时候我们可以看到,replace()方法只替换了第一次找到的结果,而并没有把所有的内容都替换掉的,所以这是有问题的

    所以在replace()的第一个参数里面,它并不仅仅只接收字符串,它还可以接收一个叫做正则表达式的东西

    关于正则表达式,后面有专门的章节讲解

    s2.replace(/爱/g,"恨");			//我恨你,你恨我吗?
    

    同样的原理,我们可以将14个里面问题来解决掉

    var str = "  我  爱  北  京  天  安  门   ";
    //去掉这个字符串中间所有的空格
    

    我们之前也试过,如果使用trim()只能去掉左右的空格,不能去掉中间的空格,所以在这里我们就可以使用replace()方法去替换就可以了

    str.replace(/ /g,"");
    
  8. toUpperCase()/toLowerCase()英文字符串的大上写转换方法 ,它可以将小写字母转换成大写字母,也可以将大写字母转换成小写字母。返回转换以后的字符串,原字符串不改变

    var str = "hello-world";
    str.toUpperCase();			//HELLO-WORLD;
    var str1 = "HELLO-WORLD";
    str1.toLowerCase();			//hello-world;
    
  9. anchor锚方法

    该方法会将字符串生成一个指定的a标签的HTML代码

    var s = "https://www.baidu.com";
    s.anchor("hahaha");
    //<a name="hahaha">https://www.baidu.com</a>
    
  10. big()方法与small()方法

    这两个方法也是把字符串生成指定的标签

    var str1 = "标哥哥";
    var str2 = "杨兰芳";
    str1.small();		//<small>标哥哥</small>
    str2.big();			//<big>杨兰芳</big>
    

像17与18这两方法还有很多与之类似的方式,我就不一一列举了

  1. padStart(maxLength,fillString)方法与padEnd(maxLength,fillString)方法

    这两个方法是一组方法,可以将字符串以指定的格式进行齐位数,如1要成三位数格式的字符串001。如56想变成6数位的字符串格式 000056

    第一个参数maxLength代表字符串补成多少位,第二个参数fillString代表使用什么东西去补

    var str1 = "1";
    var str2 = "56";
    str1.padStart(3,0);			//001
    str2.padStart(6,0);			//000056
    

    与之相对应的方法padEnd就是在结尾去补

    str1.padEnd(3.0);			//100
    str2.padEnd(6,0);			//560000
    

Number对象

Number包装对象的方法就非常简单了

  1. toString()转字符的方法,这个东西之前学过就不学了

  2. toFixed()将数字转换成字符串,但是可以四舍五入的保留指定的小数位

    var num = 123.456;
    num.toFixed(2);			//保留2位小数以后四舍五入   123.46
    num.toFixed(1);			//123.5
    

    这个方法与之前内置对象里面的Math.round()非常相似,但要注意Math.round()永远返回的都是整数部分,如果要保留小数去四舍五入,则要使用特定的方式(具体可以看Math对象)

    同时还要注意Math.round()返回的是一个 number类型的数字,而toFixed()返回的是一个string的字符串类型

Boolean对象

该对象没有什么特殊方法,保有一个toString()方法,与其它对象的toString()方法一样,故在此省略掉


作业与练习

  1. 产生一个20~100(包含100)之间的随机数10个,把它放在一个数组里面,数组里面的随机数不重复?

    先产生080的随机数,然后让产生的这个随机数加+20,这样随机数的结果就是20100之间

    数组不里面的随机数不重复无非就是判断数组里面有没有这个元素,可以通过数组里面的indexOf这个方法判断数组当中有没有这个元素,如果没有这个元素就直接添加这个随机数,如果有这个元素就重新生成随机数添加进去

    使用循环的思路完成

    var arr = [];
    
    while (arr.length < 10) {
        //生成随机数
        var temp = parseInt(Math.random() * 81) + 20;
        //检查随要数在数组里面是否存在
        if (arr.indexOf(temp) == -1) {
            //说明数组里面不存在这个随机数
            arr.push(temp);
        }
    }
    
    console.log(arr);
    

    使用递归的思路完成

    //数组存随机数
    var arr = [];
    
    //生成符合要求的随机数
    function a() {
        var temp = parseInt(Math.random() * 81) + 20;
        //判断随机数是否在这前的数组里存在
        if (arr.indexOf(temp) == -1) {
            //说明数组里面不存在这个随机数
            arr.push(temp);
        }
        //判断一下数组的长度是否小于10,如果小于10说明生成的随机数不足10个,要继续生成
        if (arr.length < 10) {
            a();
        }
    }
    
    console.log(arr);
    
  2. 现有一个产品,它的保持期只有18个月,它的生产日期就是当前时间,请计算这个产生在的过期时间是什么时候?

    第一种思路通过月份相加的形式去完成

    //第一种思路,采用加月份的方法去完成
    var currentDate = new Date(); //获取当前日期的对象
    //获取年
    var year = currentDate.getFullYear(); //年 
    var month = currentDate.getMonth(); //月
    var date = currentDate.getDate(); //日
    
    //用当前的月份+18个月得到新的月份
    var newMonth = month + 18;
    var newYear = year + parseInt(newMonth / 12);
    newMonth = newMonth % 12 + 1; 
    
    
    var lastDate = new Date(newYear + "-" + newMonth + "-" + date);
    console.log(lastDate.toLocaleDateString());
    

    通过时间戳添加的试去完成的

    在这里计算的时候,我们是把每个月当成了30天来计算

    //当前时间
    var currentDate = new Date();
    //第二步:计算当前时间的时间戳      它是一个毫秒数
    var currentDateTime = currentDate.getTime();
    //第三步:获取18个月的毫秒数
    var plusTime = 1000 * 60 * 60 * 24 * 30 * 18;
    //第四步:加这两个时间相加
    var totalTime = currentDateTime + plusTime;
    //第五步:再将这个时间戳转换成日期
    var lastDate = new Date(totalTime);
    
    console.log(lastDate.toLocaleDateString());
    
  3. 现有一个产品,它的生产日期是2020年1月18日,它的过期时间是2022年6月30日,请计算这个产品保质期的天数是多少?

    这个时候涉及到了时间的相减,我们之前也讲过,时间的相减,我们使用时间戳的方式来进行

    //生产时间
    var d1 = new Date("2020-1-18");
    // 过期时间
    var d2 = new Date("2022-6-30");
    //分别将这两个时间转换成时间戳
    var d1Time = d1.getTime();
    var d2Time = d2.getTime();
    
    //将这两个时间戳相减,得出它们的间隔
    var remainTime = d2Time - d1Time;
    //通过这个剩下的毫秒数去计算一下它们在这个地方的天数
    var dayCount = parseInt(remainTime / 1000 / 60 / 60 / 24);
    console.log(dayCount);
    
  4. 现有一人从外地回小区,根据相关政策规定需要进行《新冠疫情医学隔离》,隔离时间是14天,它回来的日期是2020年1月18日,请计算一下他什么时间可以解除隔离?【输出的日期格式必须是xxxx年xx月xx日】

    这一题和第3题是一个相对等的过程,上面是日期相等,这个是日期相加

    //定义回来时间的对象,并得到时间戳
    var comingDate = new Date("2020-1-18");
    var comingDateTime = comingDate.getTime();
    //计算14天的毫秒数(时间戳)
    var plusTime = 1000 * 60 * 60 * 24 * 14;
    //将两个时间戳进行相加,并转换成时间对象
    var lastDate = new Date(comingDateTime + plusTime);
    //请注意题目最后一句
    
    var year = lastDate.getFullYear();
    var month = lastDate.getMonth();
    var date = lastDate.getDate();
    console.log("解除隔离的时间是"+year+"年"+(month+1).toString().padStart(2,0)+"月"+date.toString().padStart(2,0)+"日");
    

    注意最后一行的代码 ,在这行代码里面,我们要将2变成02则需要使用到我们刚刚学习的包装对象String对象里面的padStart这个方法

  5. 在第4题的基础上面做一次扩展,如果结束隔离的时间是星期六或星期天,则顺延到星期一

  6. 已知有字符串 “get-element-by-id”,写一个 方法将其转化成 驼峰表示法"getElementById"

2

评论区