Date对象的相关知识

基础数据类型与复杂数据类型的区别

概念

基础数据类型:在存储时,变量中存储的是值本身,因此也叫做值类型。

复杂数据类型:在存储时,变量中存储的是地址(引用),因此也叫做引用类型。

赋值

基础数据类型将存储的值赋值给新的变量,赋值后,两个变量没有关系。修改其中一个,不会影响另外一个。

复杂数据类型,将存储的地址赋值给新的变量,赋值后,两个变量指向同一个对象。通过一个变量修改对象,另外一个访问时也是被修改后的对象。

比较

两个基础数据类型比较,直接比较值。

两个复杂数据类型比较,比较的是地址是否相同。 也就是说,要看两个变量是否指向同一个对象。

对象

对象:万物皆对象。 面向对象编程语言而言。

概念

现实中的对象: 一个具体的事物,看得见,摸得着。 具有属性和行为。 描述一个事物时,使用名词的都是属性,使用动词的都是行为。

js中的对象: 一个抽象的概念,用来描述具体的事物的。也有属性和行为。 属性可以是基础数据类型,也可以是复杂数据类型。行为:函数。

js中的对象是由 多个键值对组成。

声明对象的方式

1.通过构造函数

var obj = new Object();

2.字面量方式

var obj = {}
//也可以直接定义属性
var obj = {
    name:"zhangsan",
    age:24,
    isMarry:false,
    eat:function(){
        console.log("干饭干饭,上盆");
    }
}

属性

新增属性

//格式: 对象.属性名 = 属性值
obj.height = 175;

修改属性

//格式: 对象.属性名 = 属性值
obj.height = 170;

【注意】有则修改,无则新增。

删除属性

使用delete关键字

//格式:delete 对象.属性名
delete obj.height;

使用属性

1.点语法
//格式  对象.属性名
obj.height
2.中括号
//格式  对象['属性名']
obj['height']
3.区别

【重点】如果访问一个对象没有的属性,返回值是undefined。

点语法不能使用变量,使用变量时会将变量名当做属性名去访问。

中括号的方式可以使用变量,而且还可以使用表达式(字符串的拼接)。

内置对象

Math对象

处理js中和数学相关的函数

//求最大值
var max = Math.max(40, 35, 50, 60);

//求最小值
var min = Math.min(40, 35, 50, 60);

//求绝对值
var abs = Math.abs(-80);

//四舍五入
var round = Math.round(1.49999999);

//向上取整
var ceil = Math.ceil(1.001);

//向下取整  舍弃小数位。
var floor = Math.floor(2.9);

//随机数  返回一个0-1之间的随机数,不包含1. 含头不含尾
var random = Math.random();

随机数函数

//求n-m之间的随机整数
function getRandom(n, m) {
    return Math.floor(Math.random() * (m + 1 - n) + n);
}

随机颜色案例

function getColor(){
    //定义表示颜色的变量,#为固定值。
    var str = "#";
    //定义表示16进制的数组。每一个元素就是16进制的一个数。
    var arr = ["0","1","2","3","4","5","6",'7',"8","9","A","B","C","D","E","F"];
    //循环6次,生成随机颜色字符
    for (var i = 0; i < 6; i++) {
        //获取随机的下标。
        var index = getRandom(0,15);
        str+=arr[index];
    }
    return str;
}

Date对象

处理日期

定义日期对象

//创建日期时,如果不指定特定日期,则默认表示当前时间。
var d = new Date();
//指定特定日期
var d = new Date("2021-10-29");
//数字形式,指定日期
var d = new Date(2021,9,29);

【注意】js中获取到的月份会比实际月份小一个月。因为js中是从0开始计算月份的。 月份的范围为:0~11.

方法

//获取时间的毫秒数
d.getTime()
//设置时间
d.setTime(86400000);
//获取 几号
d.getDate()
//设置 几号
d.setDate(10)
//获取 月份
d.getMonth();
//设置月份【注意】 月份从0开始  如果超过11,则从第二年开始计算。
d.setMonth(1)
//获取年份
d.getFullYear();
//设置 年份
d.setFullYear()
//获取 星期几
d.getDay()
//时
d.getHours/d.setHours
//分
d.getMinutes()/d.setMinutes(20)
//秒
d.getSeconds()/d.setSeconds();

显示日期的方法

//显示:星期 月 日 年  Fri Oct 29 2021
d.toDateString() 
///显示 时分秒 时区  10:06:06 GMT+0800 (中国标准时间)
document.write(d.toTimeString())
//以本地的格式显示 年月日  2021/10/29
d.toLocaleDateString()
//以本地的格式显示 时分秒  上午:07:00
d.toLocaleTimeString()
//以本地的格式显示 年月日时分秒  2021/10/29  上午07:00
d.toLocaleString()

自定义日期格式

//格式化日期:X年X月X日 hh:mm:ss
//参数:日期对象
//返回值:格式化好的字符串。
function formatDate(date){
    //获取年
    var year = date.getFullYear();
    //获取月
    var month = date.getMonth();
    //获取日
    var day = date.getDate();

    //获取 时
    var h = date.getHours();
    //获取 分
    var m = date.getMinutes();
    //获取 秒
    var s = date.getSeconds();
    return `${year}${month}${day}${zeroFill(h)}:${zeroFill(m)}:${zeroFill(s)}`
}

function zeroFill(num){
    return num<10?"0"+num:num;
}

定时器

setInterval

按照周期执行相应的代码。 开启一个定时器。

//fn:周期执行的函数  interval:每隔多久执行一次  单位是ms
//timer 定时器的ID。
var timer = setInterval(fn,interval) 

【注意】fn的位置上,除了函数外,也可以直接写代码,但是代码只能是字符串的形式。

clearInterval

关闭相应的定时器。需要关闭定时器ID。

clearInterval(timer);

延时器

setTimeout

延迟一段时间后,执行指定的代码,返回一个延时器的唯一ID。

//fn:周期执行的函数  delay:延迟多久执行一次 单位是ms
//timer 定时器的ID。
var timer = setTimeout(fn,delay) 
clearTimeout

关闭相应的延时器,需要一个延时器的ID。

clearTimeout(timer)

包装对象

常用的三个包装对象:String Number Boolean

为什么要使用包装对象?

包装对象可以为我们提供一些属性和方法,以便于我们操作基础数据类型。

String对象

创建一个string对象。

var str = new String("三十功名尘与土,八千里路云和月");

方法和属性

//字符串的长度
str.length

//返回下标位置上的字符  0~length-1  超出范围返回 空 ""。
var str = b.charAt(15);//返回下标为15的字符给str

//截取字符串 substr(开始的下标,截取多少个字符)
var str = b.substr(12,3); //从下标为12的位置,截取3个字符。返回给str。

//截取字符串 substring(开始的下标,结束的下标) 含头不含尾
var str = b.substring(2,4);//从下标为2的字符开始截取,到下标为4的字符结束,不包含4.

//截取字符串  slice(开始下标,结束下标)  可以写负数  负数表示倒数
var str = b.slice(2,-1); // 从下标为2的字符开始截取,到倒数第一位结束。不包含最后一位。
//转大写  所有英文单词转大写

a = a.toUpperCase(); 
//转小写 所有英文单词转小写
a = a.toLowerCase();

//替换 replace(要替换的字符,替换成的字符)
var str  = b.replace("三十","十三") //将b字符串中所有的 `三十` 替换成 '十三'

//分割字符串 split('分隔符')  返回值是一个数组。数组中包含被分割后的字符串。  如果分隔符在原数组中不存在,则返回一个只包含原字符串的数组。
var res = b.split(","); //表示将字符串以逗号分割

//查找字符串中是否包含某个字符,如果包含,则返回该字符的下标。如果不包含,返回-1;
//如果查找的字符是多字符,返回的下标为第一个字符的下标
var res = b.indexOf("尘土"); //查找b字符串中是否有'尘土'这个字符串,如果有返回'尘'的下标。

//查询某个字符串是否存在在另外一个字符串中  返回值是布尔值。 有则true,无则false。
var res = b.incloudes("尘与土"); //查找 b字符串中是否包含'尘与土'。

//去除首尾空格  主要用于表单注册(涉及到用户输入时)等场景。
var res = b.trim();

//判断一个字符串是不是以某个字符串开头。
var res = b.startsWith("三十") 
console.log(res);

//判断一个字符串是不是以某个字符串结尾
var res = b.endsWith("云和月");
console.log(res);

//从前面补全字符串   目标长度:字符串最终要变成的长度, 填充字符 补全时所用的字符。
//格式: str.padStart(目标长度,'填充字符');
// 【注意】 1.如果目标长度小于实际长度,则无效。
//2.如果填充字符由多个字符组成,填充时若不够,则会重复填充,直到填满目标长度,如字符还有剩余,后面的会被舍弃。
var num = new String("10");
var res = num.padStart(2,"0");
console.log(res);

自动装箱

自动装箱:自动将基础数据类型包装成包装对象。

程序执行时,如果让基础数据类型使用了属性和方法,则js会自动将其包装为包装对象,然后执行完,再将其拆箱为基础数据类型

//下面的案例中,可以看到  基础数据类型可以使用 属性和方法,这就说明在执行时,字符串自动变成了String对象。
var str = "  为啥你在衣柜里修水龙头?"
console.log(str.length);
console.log(str.trim());
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值