对象object,Math对象(运算的方法),Date日期对象方法

回顾:八大类型
基础类型
number(数值)
string(字符串)
boolean(布尔值)
null(空)
undefined(未定义)

引用类型
数组 array
函数function
对象Object

对象

对象是指一个具体的事物。万物皆对象。
一个具体的事物一般都会有行为和特征。

对象的行为------js对象的函数
对象的特征------js对象的属性

JavaScript中的对象
JavaScript中的对象可以看做生活中具体事物的抽象。
js对象是属性+函数的集合。
属性:可以是基本数据类型,也可以是引用数据类型。

创建一个对象

1.使用new Object关键字类创建

<script>
        var  hero = new Object();//创建一个空对象
        hero.figure = "虞姬";
        alert( hero.figure);
    </script>

在这里插入图片描述
使用Object对象的create方法创建(了解即可)
var 对象名=Object.create(参考对象)

 <script>
        var obj = Object.create(null); //创建一个空对象
        console.log(obj); //{}
        obj.name = '张三';
        console.log(obj);// {name: "张三"};
    </script>
<script>
        var obj = {
            uname: "张三"
        };
        var obj1 = Object.create(obj);//等同于这种效果 var obj1 =obj;
        console.log(obj1.uname);
    </script>
  • 1.1新增属性
  <script>
        var hero = new Object();创建一个空对象
        hero.figure = "虞姬";
        hero.name = "韩信";
        hero["age"] = "30";注意这里是字符串
        alert(hero["age"]);
    </script>

在这里插入图片描述

  • 1.2使用属性
    对象名.属性名
hero.name//韩信
例如上面就能获取到name值

使用 字面量 形式 {} 关键字类创建(重要)

var 对象名={};//空对象
var 对象名={
键:值,
键:值,
};
赋值: 对象名.键=值(如果值存在,表示修改数据,如果值不存在表示添加数据)

<script>
        var obj = {}; //创建一个空对象
        console.log(obj);// {}
        obj.uname = "张三";
        console.log(obj); // {uname: "张三"}
    </script>
<script>
        //非空对象,(键都是字符串,值可以是六种数据中任意一种)
        var obj = {
            uname: "张三", //字符串
            uage: 18, //数值
            islike: true, //布尔值
            sayhello: function() { //函数
                console.log("HELLO..")
            },
            cate: ['大猫', '小猫'], //数组
            dog: { //对象
                name: '张二狗',
                age: 1
            }

        }
        console.log(obj); //{uname: "张三", uage: 18, islike: true, cate: Array(2), sayhello: ƒ, …}
        obj.sayhello(); //HELLO..   方法调用模式
    </script>
<script>    
        var hero ={ming:"虞姬",age:"18"};//定义一个对象
        console.log(hero.age)//18
        //获取方式-对象名->属性名(就能拿到里面的值)
    </script>
  • 3 遍历属性

for…in 语句用于对数组或者对象的属性进行循环操作。

for … in 循环中的代码每执行一次,就会对数组的元素或者对象的属性进行一次操作

   for (变量 in 对象)
{
    在此执行代码
}
 <script>
        var hero ={};//创建一个对象
        hero.age = function () {
          document.write("虞姬");
            document.write("亚瑟");     
        }
        hero.age();//调用
        for(var key in hero){
             console.log(hero);//虞姬-亚瑟
        }
    </script>

在这里插入图片描述

  • 4 删除属性

         delete 对象名.属性名
    
<script>
        var hero = {};
        hero.age = "虞姬";
        hero.age2 = "亚瑟";
        delete (hero.age);
        alert(hero.age);
    </script>

在这里插入图片描述

对象的分类

1.内建对象
由ES标准定义的对象,在任何ES实现中都可以使用 js提供的对象
Math(提供运算的方法)
Date(创建日期对象)
String (字符串)
Number (数值)
Boolean(布尔值)
Function(函数)
Object(对象)

2.宿主对象
主要有浏览器提供的对象。
BOM DOM
3.自定义对象
开发人员自己定义的对象。

基本类型与引用类型的区别

区别:
基础数据类型的数据存储在栈中,变量直接指向的是基础数据类型的值。
引用数据类型的数据存储在堆中,变量指向的是引用数据类型的地址。

在这里插入图片描述

比较:
基本数据类型比较时,比较值。
而引用数据类型比较时,比较内存地址,如果内存地址相同,指向了同一个对象,则相等,否则不相等。

<script>
         var hero={
            "yi":"亚索",
             "er":"狂风绝息斩"
         }
         var  hero2=hero;
         alert(hero2==hero);
    </script>

在这里插入图片描述

<script>
         var hero={
            "hName":"亚索",
            "R":"狂风绝息斩"
        }
        var hero2={
            "hName":"亚索",
            "R":"狂风绝息斩"
        }
       alert(hero2 == hero) ;
    </script>

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

取一位(或n位)小数

<script>
    var num = 2.446242342;
    num = num.toFixed(3);//保留3位,最后一位遵循4舍5入
    document.write(num);//输出2.446

console.log(num.toPrecision(4));//输出2.446
 toPrecision方法也会进行四舍五入。该方法是保证长度为固定位数的,包括整数部分和小数部分。
</script>

内置对象(string)

charAt(m) 返回指定位置的字符
indexOf(m) 返回指定字符串的位置,从左到右,找不到返回-1
substr(m, n)返回给定字符串中从m位置开始,取n个字符,如果参数n省略,则意味着取到字符串末尾
substring(m, n)返回给定字符串中从m位置开始,到n位置结束,如果参数n省略,则意味着取到字符串末
toLowerCase()将字符串中的字符全部转化成小写
toLocaleUpperCase()将字符串中的字符全部转化成大写

 <script>
        var str = "1a2b3c4D5v";
        console.log(str.charAt(5)); //c
        console.log(str.indexOf("a")); //1
        console.log(str.substr(1, 3)); //a2b
        console.log(str.substring(1, 3)); //a2
        console.log(str.toLowerCase()); //1a2b3c4d5v
        console.log(str.toLocaleUpperCase()); //1A2B3C4D5V
        console.log(str.length); //10
    </script>

Math对象(运算的方法)

提供了很多关于运算的方法。

Math.random(); 返回0-1之间的随机数。

<script>
         Math.random(); 返回0-1之间的随机数。
        这里表示2到7    但7的概率最小
        本来是0到5
        现在0+2   5+2
        表示2    到7
        var yi =    parseInt( Math.random()*5 +2 )  ;

        document.write(yi);
    </script>   

假如我们需要一个n-m之间的数。
Math.round(Math.random()*(m-n)+n)
Math.floor(Math.random() * (m - n + 1) + n);

Math.round()四舍五入
Math.max() 返回最大值。
Math.min() 返回最小值
Math.abs() 返回绝对值
Math.ceil()向上取整
Math.floor() 向下取值
在这里插入图片描述

<script>
        var str = 3.14;
        console.log(Math.round(str)); //3
        console.log(Math.max(str)); //3.14
        console.log(Math.min(str)); //3.14
        console.log(Math.abs(str)); //3.14
        console.log(Math.ceil(str)); //4
        console.log(Math.floor(str)); //3
    </script>

Math.pow(x,y) x的y次方
Math.sqrt(num) 开平方

Math.PI = 180° 弧度。
1弧度=Math.PI/180.

Date() 创建日期对象

dayjs体积比moment 小
日期插件day.js
日期插件momentjs

创建日期对象。
Wed Jan 06 2021 14:38:02 GMT+0800 (中国标准时间)
星期 月 日 年 时分秒 时区
创建日期对象是,可以指定日期。时分秒若不填写,则默认为00:00:00

指定日期的几种方式:
自己设定
1.new Date(“2021/01/07”)
注意,只有这种写法(字符串包裹),这里面的一月才是我们中国的一月

    var date = new Date(2021, 01, 08);
    var date1 = new Date("2021-01-08");
    var date2 = new Date("2021/01/07");
    console.log("时间", date.toLocaleDateString()); //2021/2/8
    console.log("时间", date1.toLocaleDateString()); //2021/1/8
    console.log("时间", date2.toLocaleDateString()); //2021/1/7

2.new Date(2020,09,30,15,33,20);这里面的9月是8月
3.new Date(1576800000000);

   var data = new Date(2021, 2, 6, 16, 30, 00);自定义格林威治时间
  var data = new Date("2021-03-06 16:30:00");//自定义北京时间
        在国外,月份是从0开始的,0-11

var d =new Date(); 这个行为是调用构造函数 构造函数的作用:生成对象。

<script>
        var d =new Date();
        document.write(d);
    </script>

输出现在的时间
在这里插入图片描述

Date日期对象方法

格式:Date.parse(日期对象);
功能:将日期对象转为毫秒数。
1秒等于1000毫秒

d.getTime() 获取当前的毫秒数。
d.getDate() 返回日
d.getDay() 返回周几。

d.getFullYear() 返回年
d.getMonth() 获取月份 从0开始 范围为:0-11
d.getHours() 获取小时数
d.getMinutes() 获取分钟数
d.getSeconds() 获取秒数
d.getMilliseconds() 获取毫秒数
d.getTimezoneOffset() 获取本地时间与格林威治时间的分钟差。

获取

 <script>
        var d =new Date();
         //var d2=d.getTime();获取当前的毫秒数。或d*1也能转换为当前毫秒
        // var d2=d.getDate();返回日
        //  var d2=d.getDay();返回周几
        //  var d2=d.getMonth();获取月份 从0开始  范围为:0-11
          var d2=d.getFullYear();
          //返回年
        //  var d2=d.getHours();获取小时数
        document.write(d2);
    </script>
 <script>
        var d = new Date();
        // 以特定格式显示 星期几 月 日 年
       // alert(d.toDateString());//Thu Jan 21 2021
        // 以特定格式显示 时分秒 时区
        // alert(d.toTimeString());//16:33:30 GMT+0800 (中国标准时间)
        // alert(d.toLocaleDateString());//2021/1/6
         //alert(d.toLocaleTimeString());//下午4:34:58
         //alert(d.toUTCString());//显示格林威治时间。Thu, 21 Jan 2021 11:53:55 GMT
    </script>
    var now = new Date();
    console.log(now);//Sat Mar 06 2021 15:37:19 GMT+0800 (中国标准时间)
    console.log( now.toUTCString());//Sat, 06 Mar 2021 07:37:19 GMT

在这里插入图片描述
设置日期:
setDate() 设置日期的天数。
setMonth() 设置月份
d.setFullYear() 设置日期的年份
d.setHours() 设置小时数
d.setMinutes() 设置分钟数
d.setSeconds() 设置秒数
d.setMilliseconds() 设置毫秒数

<script>
         var d =new Date( 2021,2,23   );
         var d2=d.setMonth(2);
        document.write(d);
    </script>

在这里插入图片描述

时间数组排序

    const arr = ['2023-04-20 20:00:00', '2023-04-22 20:00:00', '2023-04-21 20:00:00'];
    function sortTime(arr, bol) {
        if (bol) {
            arr.sort((a, b) => {
                return Date.parse(a) - Date.parse(b);
            });
        } else {
            arr.sort((a, b) => {
                return Date.parse(b) - Date.parse(a);
            });
        }
        return arr
    }
    console.log("时间", sortTime(arr, true));//true从小到大

在这里插入图片描述

毫秒数转换天/时/分/秒方法

// mss代表毫秒数
        var days = parseInt(mss / (1000 * 60 * 60 * 24));//天
        var hours = parseInt((mss % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));//小时
        var minutes = parseInt((mss % (1000 * 60 * 60)) / (1000 * 60));//分钟
        var seconds = (mss % (1000 * 60)) / 1000;//秒
  • 毫秒数转换年月日时分秒方法
   function miaostr(time) {
        //将毫秒转化成年月日时分秒
        var timdedetail = time;//假如是10位毫秒需要乘1000
        //获取年份
        var year = new Date(timdedetail).getFullYear();
        //获取月份
        var month = String(new Date(timdedetail).getMonth() + 1).padStart(2, '0');
        //获取日
        var date = String(new Date(timdedetail).getDate()).padStart(2, '0');
        //获取小时
        var h1 = String(new Date(timdedetail).getHours()).padStart(2, '0');
        //获取分钟
        var m1 = String(new Date(timdedetail).getMinutes()).padStart(2, '0');
        //获取秒
        var s1 = String(new Date(timdedetail).getSeconds()).padStart(2, '0');
        //组合格式为年-月-日 时:分:秒(2021-07-05 21:21:21)
        var starttime = year + "-" + month + "-" + date + " " + h1 + ":" + m1 + ":" + s1;
        //输出样式:2020-10-25 14:25:36
        return starttime
    }
const SIGN_REGEXP=/([yMdwWHhsm])(\1*)/g;
const DEFAULT_PATTERN="yyyy-MM-dd";
function padding(s,lenth){
let len=lenth - ( s + "").length;
for (var i = 0; i < len; i++) {
   s="0"+s
}
return s
}
export const formatDate={
    format:function(date,pattern){
        pattern=pattern||DEFAULT_PATTERN;
        return pattern.replace(SIGN_REGEXP,function($0){
            switch($0.charAt(0)){
                case "y":
                return padding(date.getFullYear(),$0.length);
                case "M":
                return padding(date.getMonth()+1,$0.length);
                case "d":
                return padding(date.getDate(),$0.length);
                case "w":
                case "W":
                return (date.getDay()+1);
                case "h":
                case "H":
                return padding(date.getHours(),$0.length);
                case "m":
                 return padding(date.getMinutes(),$0.length);
                 case "s":
                 return padding(date.getSeconds(),$0.length);
            }
        })
    }
}

vue中使用

formatDate.format(new Date(当前毫秒), "yy-dd-mm HH:mm:ss")//HH:mm:ss可编辑
  • 求时间差须知

时间相减, 可以直接拿日期相减 不用先转毫秒数在相减,—>减完之后的数值就是毫秒数

<script>
    // var data = new Date(2021, 2, 6, 17,55, 00);//自定义格林威治时间
    var data = new Date("2021-03-06 17:55:00");//自定义北京时间
    var now = new Date();//现在时间
    var jian = data - now;
    console.log(jian);// 3096148
</script>

显示昨天日期

不要直接拿日减1,因为1-1=0,没有0日

  function getDay(data, num) {//num是数量,几天可以为负值
        var today = new Date(data);
        var nowTime = today.getTime();
        var ms = 24 * 3600 * 1000 * num;
        today.setTime(parseInt(nowTime + ms));
        console.log("时间", today);
        var oYear = today.getFullYear();
        var oMoth = (today.getMonth() + 1).toString();
        if (oMoth.length <= 1) oMoth = '0' + oMoth;
        var oDay = today.getDate().toString();
        if (oDay.length <= 1) oDay = '0' + oDay;
        console.log(oYear + "-" + oMoth + "-" + oDay)//2023-09-22
        return oYear + "-" + oMoth + "-" + oDay
    }
    getDay("2023-09-21", 1)
  • 显示今天时间
        function dateFormat() {
            //格式化时间
            var date = new Date();
            var year = date.getFullYear();
            var month = date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1;
            var day = date.getDate() < 10 ? "0" + date.getDate() : date.getDate();
            var hours = date.getHours() < 10 ? "0" + date.getHours() : date.getHours();
            var minutes = date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes();
            var seconds = date.getSeconds() < 10 ? "0" + date.getSeconds() : date.getSeconds();
            // 拼接
            /*  return year + "-" + month + "-" + day + " " + hours + ":" + minutes + ":" + seconds; 2023-05-17 14:23:28*/
            return year + "-" + month + "-" + day + " ";
        }
        console.log("当前时间", dateFormat());//2023-05-17
//====================================================================

 function toDate() {
        let date = new Date()
        let year = date.getFullYear()
        let month = (date.getMonth() + 1).toString().padStart(2, '0')
        let day = date.getDate().toString().padStart(2, '0')
        var time = year + '-' + month + '-' + day
        return time
    }
    console.log(toDate(new Date()));//2023-09-07

padStart第一个参数是填充后的结果字符串的长度。如果 padLength 小于字符串的长度,则字符串按原样返回,没有填充
字符串补全功能padStart() 、padEnd()及日期格式补全功能应用

显示选中日期的周一

    var now = new Date("2022-12-08");
    function getFirstDayOfWeek(date) {
        var weekday = date.getDay() || 7; //获取星期几,getDay()返回值是 0(周日) 到 6(周六) 之间的一个整数。0||7为7,即weekday的值为1-7
        date.setDate(date.getDate() - weekday + 1); //往前算(weekday-1)天,年份、月份会自动变化
        return date;
    }
    function add0(m) {
        return m < 10 ? '0' + m : m
    }
    var gdata = getFirstDayOfWeek(now).toLocaleDateString();
    var hdata = gdata.replace(/\//g, "-")
    var year = (hdata.split("-"))[0]
    var hour = (hdata.split("-"))[1]
    var minute = (hdata.split("-"))[2]
    var monday = year + '-' + add0(hour) + '-' + add0(minute)
    console.log("周一", monday);

特定格式显示

var a = new Date()//Tue Jul 27 2021 15:03:59 GMT+0800 (中国标准时间)
    var b = a.toLocaleDateString();//2021/7/27
    var rule = /\//g;
    console.log(b.replace(rule, "-"));//2021-7-27
const dateTransform = date => {
        const tmp = date.split('\/');
        if (tmp.length === 1) {
            return date;
        }
        if (tmp[1].length !== 2) {
            tmp[1] = '0' + tmp[1];
        }
        if (tmp[2].length !== 2) {
            tmp[2] = '0' + tmp[2];
        }
        return tmp.join('-');
    }
    var a = dateTransform(new Date().toLocaleDateString());
    //  把得到时间这种格式的2021/7/27 做为参数 传入上面方法进行 特意  格式化
    console.log(a);//2021-07-27
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值