对象及日期对象

对象

1.什么是对象

类是对象的抽象,对象是类的实例

程序=算法+数据结构

万物皆对象,对象是一个具体的事物,看到见摸得着,对象是一组无序相关属性方法的集合(无序,所以对象没有length属性),所有事物都是对象,列如字符串,数值,数组,函数等.

  • 属性:事物的特征,在对象中用属性表示(常用名词)
  • 方法:事物的行为,在对象中用方法表示(常用动词)

2.对象的创建方式

1.利用字面量进行创建对象

//利用字面量创建一个空的对象
var obj ={};//创建了一个空的对象
var obj1={
    uname:'yiling',
    sex:'gril',
    age:21,
    sayHi:function(){
        console.log('hi..');
    }
}
// 1.里面的属性或者方法我们采取键值对的形式 键 属性名: 值 属性值
// 2.多个属性或者方法中间使用逗号分割
// 3.方法冒号跟的是一个匿名函数
//使用对象
//1.调用对象的属性 我们采取对象名.属性名 .我们理解为 的
console.log(obg1.uname);//yiling
//2.方法二调用 对象名['属性名'],注意括号里面的属性必须加引号,我们后面会用
console.log(obg1['uname']);//yiling
//3.调用对象方法 sayHi的执行 对象名.方法名() 千万别忘记添加小括号
obj1.sayHi();

作业

  /* 
                                请用对象字面量的形式创建一个名字为可可的狗对象。
                                具体信息如下:
                                姓名:可可
                                类型(ype):阿拉斯加状
                                年龄:5岁
                                颜色:棕红色。
                                技能:汪汪汪(bark),演电影(showFilm)
                                        */
        var dog = {
            uname: '可可',
            type: '阿拉斯加犬',
            age: 5,
            color: '棕红色',
            bark: function() {
                console.log('汪汪汪');

            },
            showFilm: function() {
                console.log('看电视');

            }
        }
        console.log(dog.age);
        console.log(dog['color']);
        dog.bark();//不需要再次加console.log,否则会报出underfined

2.利用new Object创建对象

var obj=new Object();//创建了一个空对象 注意O要大写
obj.uname="yiling";
obj.sex="男";
obj.age=18;
obj.sayHi=function(){
    console.log("hi")
}
//1.我们利用等号=赋值的方法 添加对象的属性和方法
//2.每个属性和方法之间 分号结束
//3.调用跟字面量的调用方法一样
console.log(obj.uname);
console.log(obj['age']);
obj.sayHi();

作业

  //  请用new Object形式创建一个鸣人对象。
        // 具体信息如下:
        // ·姓名:鸣人
        // 。性别:男
        // 。年龄:19岁
        // 。技能(ski):影分身术
        var obj = new Object();
        obj.uname = "名人";
        obj.sex = "男";
        obj.age = 18;
        obj.skill = function() {
            console.log("影分身术");
        }
        console.log(obj['age']);
        console.log(obj.sex);
        obj.skill();

3.利用构造函数创建对象

构造函数:是一种特殊的函数,主要用来初始化对象,即为对象成员变量赋初始值,它总与new运算符一起使用,我们可以把对象中一些公共的属性和方法抽取出来,然后封装到这个函数里面

在这里插入图片描述

构造方法的语法格式:

function 构造函数名(){

this.属性=值;

this.方法=function(){}

}

new 构造函数名();//调用必须加new关键字

function  Star(uname,age,sex){
    this.name=uname;
    this.age=age;
    this.sex=sex;
      this.sing = function(sang) {
                console.log(sang)
            }
}
var yl=new Star('yiling',21,'女');//函数返回的是一个对象
console.log(yl.name);
console.log(yl['sex']);
  yl.sing("素颜");
//1.构造函数的首字母要大写
//2.我们构造函数不需要return 就可以返回结果
//3.我们调用构造函数,必须使用new关键字
//4.我们只要用new Star() 调用函数,就会创建一个对象{}
//5.我们的属性和方法面前必须加this

3.变量,属性,函数,方法的区别

  1. 变量和属性的相同点,他们都是用来存储数据的

    不同点:

    • 变量:单独声明并赋值 使用的时候直接写变量名 单独存在
    • 属性:在对象里面的不需要声明的,使用的时候必须写 对象名.属性名
  2. 函数和方法的相同点:都是实现某种功能 做某件事

    不同点:

    • 函数是单独声明 并且调用的 函数名() 单独存在的
    • 方法 在对象里面 调用的时候 对象.方法()

4.new关键字

new在执行时会做四件事情:
1.在内存中创建一个新的空对象。
2.让this指向这个新的对象。
3.执行构造函数里面的代码,给这个新对象添加属性和方法。
4.返回这个新对象(所以构造函数里面不需要return)。

5.遍历对象

使用for(var 变量名称 in 对象名称){}进行遍历

  var obj = {
                uname: 'yiling',
                age: 21,
                sex: '女',
                sing: function() {}
            }
            // for in 遍历我们的对象
            //for(变量 in 对象){}
        for (var k in obj) {
            console.log(obj[k]); //输出得到的是属性值,因为k是变量,所以用中括号
            console.log(k); //k 变量输出 得到的是属性名

        }

7.内置对象

1.random随机数

  1. Math对象随机数方法 random()返回一个随机小数 0<=x<1

  2. 这个方法里面不跟参数

  3. 代码验证

    console.log(Math.random());

  4. 我们想要得到两个数之间的随机整数 并且包含这两个数整数

    Math+floor(Math.random()*(max-min+1))+min;
    
    function getRandom(min,max){return Math.floor(Math.random()*(max-min+1))+min;
    
    }
    
    console.log(getRandom(1,10));
    
  5. 随机点名

      function getRandom(min, max) {
                return Math.floor(Math.random() * (max - min + 1) + min);
            }
            var arr = ['易玲', '阳哥', '廖廖', '易易'];
            console.log(arr[getRandom(0, arr.length - 1)]);
    
  6. 猜数字游戏

  // 程序随机生成一个1~50之间的数字,只有10次机会并让用户输入一个数字,
        // 1.如果大于该数字,就提示,数字大了,继续猜;
        // 2.如果小于该数字,就提示数字小了,继续猜:
        // 3.如果等于该数字,就提示猜对了,结束程序。
        var random1 = Math.floor(Math.random() * 50) + 1;
        var count = 0;
        console.log(random1)
        while (true) {

            var num = parseInt(prompt("请输入一个数字"));

            if (num > random1) {
                console.log('数字大了,继续猜');

            } else if (num < random1) {
                console.log('数字小了,继续猜');
            } else {
                console.log('恭喜你,猜对了!');
                break;
            }
            count++;
            console.log(count)
            if (count == 10) {
                break;
            }
        }

2.Date()

1.概述

  • date对象和math对象不一样,它是一个构造函数,所以我们需要实例化之后才能使用,必须使用new来创建
  • date实例用来处理日期和时间

2.Date()方法的使用

  1. 获取挡当前时间必须实例化

    var now =new Date();
    console.log(now)
    
  2. Date()构造函数的参数

    如果括号里面有时间,就返回参数里面的时间,列如日期格式字符串为’2019-5-1’,可以写成new Date(‘2019-5-1’)

    或者new Date(‘2019/5/1’)或者new Date(2019,5,1)[但是这里返回的是6月 不是5月]

  3. Date()方法

    对象及日期对象_第1张图片

    返回当前时间年月日 星期的作业

       var date = new Date();
            var year = date.getFullYear();
            var month = date.getMonth() + 1;
            var dates = date.getDate();
            var day = date.getDay();
            var arr = ['星期天', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];
            console.log(year + "年" + month + "月" + dates + "日 " + arr[day])
    //打印 2023年7月29日 星期六
    

    获取时分秒

     var date = new Date();
            var h = date.getHours();
            var s = date.getMinutes();
            var m = date.getSeconds();
            console.log(h, s, m);
    
            function getTimer() {
                var h = date.getHours();
                h = h < 10 ? '0' + h : h;
                var s = date.getMinutes();
                s = s < 10 ? '0' + s : s;
                var m = date.getSeconds();
                m = m < 10 ? '0' + m : m;
                return h + ':' + s + ':' + m;
            }
            console.log(getTimer());
    

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

    1. 通过valueOf(),getTime()
    2. 简单写法(最常用的写法) var date1= +new Date();
    3. H5新增的 获得总的毫秒数 Date.now()

    倒计时案例

       /* 
     ①核心算法:输入的时间减去现在的时间就是剩余的时间,即倒计时,但是不能拿着时分秒
     相减,比如05分减去25分,结果会是负数的。
     用时间戳来做。用户输入时间总的毫秒数减去现在时间的总的毫秒数,得到的就是剩余时
     间的毫秒数。
     ③
     把剩余时间总的毫秒数转换为天、时、分、秒(时间戳转换为时分秒)
     转换公式如下:
     ·d=parselnt(总秒数/60/60/24);/计算天数
     ·h=parselnt(总秒数/60/60%24)/计算小时
     ·m=parselnt(总秒数/60%60);,/计算分数
     s=parselnt(总秒数%60):计算当前秒数
      */
            function countDown(time) {
                //返回当前时间戳
                var nowTime = +new Date();
                //返回用户输入的时间戳
                var inputTime = +new Date(time);
                var times = (inputTime - nowTime) / 1000; //返回当前的总秒数,所以是除以1000
                //  把剩余时间总的毫秒数转换为天、时、分、秒(时间戳转换为时分秒)
                var d = parseInt(times / 60 / 60 / 24);
                d = d < 10 ? '0' + d : d;
                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;
            }
            console.log(countDown('2023-7-29 12:00:00'));
    

你可能感兴趣的:(javascript,开发语言,ecmascript)