美文网首页
JS-day05-5.3

JS-day05-5.3

作者: xcx时光你好 | 来源:发表于2018-05-05 17:36 被阅读0次

内置对象

JavaScript中的对象分为3种:内置对象、浏览器对象、自定义对象

JavaScript 提供多个内置对象:Math/Array/Number/String/Boolean...

==对象只是带有属性和方法的特殊数据类型。==

学习一个内置对象的使用,只要学会其常用的成员的使用(通过查文档学习)

可以通过MDN/W3C来查询

内置对象的方法很多,我们只需要知道内置对象提供的常用方法,使用的时候查询文档。

MDN

Mozilla 开发者网络(MDN)提供有关开放网络技术(Open Web)的信息,包括 HTML、CSS 和万维网及 HTML5 应用的 API。

  • MDN
  • 通过查询MDN学习Math对象的random()方法的使用

案例

//JavaScript 组成:ECMAScript BOM DOM
        //ECMAScript:变量、注释、数据类型、类型转换、操作符、流程控制语句(判断和循环) 数组、对象、构造函数、内置对象
        //JavaScript中的对象有三种:自定义对象、内置对象、浏览器对象
        //ECMAScript中的对象:自定义对象、内置对象
        //内置对象:Math/Array/Date...
        //最常用的属性和方法
        //差文档:MDN、W3C

        console.log(Math.random()); //0.8001890192704588 返回的是0-1之间的随机数
        //1.生成min到max之间的随机数
        var min=10;
        var max=20;
        console.log(Math.random()*(max-min)+min); //17.87411706620979 返回的是10-20之间的随机数(包含小数)
        console.log(Math.floor(Math.random()*(max-min+1)+min)); //17.87411706620979 返回的是10-20之间的随机整数 +1包含20,不+1不包含20
        console.log(parseInt(Math.random()*(max-min)+min));//返回的是1-20之间的随机数 不包含20

如何学习一个方法?

  1. 方法的功能
  2. 参数的意义和类型
  3. 返回值意义和类型
  4. demo进行测试

Math对象

==Math对象不是构造函数==,它具有数学常数和函数的属性和方法,都是以静态成员的方式提供

跟数学相关的运算来找Math中的成员(求绝对值,取整)

Math

演示:==Math.PI、Math.random()、Math.floor()/Math.ceil()、Math.round()、Math.abs() 、Math.max()==

Math.PI                     // 圆周率
Math.random()               // 生成随机数
Math.floor()/Math.ceil()     // 向下取整/向上取整
Math.round()                // 取整,四舍五入
Math.abs()                  // 绝对值
Math.max()/Math.min()        // 求最大和最小值

Math.sin()/Math.cos()        // 正弦/余弦
Math.power()/Math.sqrt()     // 求指数次幂/求平方根

解释

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script type="text/javascript">
    //不带()是属性,是一个值  带()的是方法 表示方法的调用
    //1. Math.PI                        // 圆周率
      console.log(Math.PI);//3.141592653589793
 //   2. Math.random()              // 生成随机数
      var max=6;
      var min=1;
      console.log(Math.random()*(max-min)+min); //1-6之间随机数(包含小数 取不到6 因为 Math.random()的取值范围为[0,1))
      console.log(Math.floor(Math.random()*(max-min+1)+min)); //1-6之间随机整数 可以取到6
 //   3. Math.floor()/Math.ceil()    // 向下取整/向上取整
      console.log(Math.floor(5.2)); //5
      console.log(Math.ceil(6.5)); //7
 //   4. Math.round()               // 取整,四舍五入
       console.log(Math.round(6.3)); //6
       console.log(Math.round(6.5)); //7
 //   5. Math.abs()                 // 绝对值
       console.log(Math.abs(6.5));//6.5
       console.log(Math.abs(-6.5)); //6.5
 //   6.Math.max()/Math.min()        // 求最大和最小值
       console.log(Math.max(6,5)); //6
       console.log(Math.min(6,5,1));//1  
    </script>
</head>
<body>
    
</body>
</html>

案例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script type="text/javascript">
     // 1.求10-20之间的随机数
           var max=20;
           var min=10;
           console.log(Math.floor(Math.random()*(max-min+1)+min)); //返回的是10-20之间随机整数 [10,20]
     // 2.随机生成颜色RGB [0,255]
     //如:rgb(112,112,112)
            function random(min,max) {
                return Math.floor(Math.random()*(max-min+1)+min);
            }
            function randomRGB(min,max) {
            var color1=random(min,max);
            var color2=random(min,max);
            var color3=random(min,max);
            return 'rgb('+color1+','+color2+','+color3+')';
           }
           console.log(randomRGB(0,255));
     // 3.模拟实现max()/min()
            // function getMax() {
            //  var max=arguments[0];
            //  for(var i=1;i<arguments.length;i++) {
            //      if (max<arguments[i]) {
            //          max=arguments[i];
            //      }
            //  }
            //  return max;
            // }
            // var max=getMax(3,5,6,8);
            // console.log(max);

            // function getMin() {
            //  var min=arguments[0];
            //  for(var i=1;i<arguments.length;i++) {
            //      if (min>arguments[i]) {
            //          min=arguments[i];
            //      }
            //  }
            //  return min;
            // }
            // var min=getMin(3,5,6,8);
            // console.log(min);
            var MyMath={
                max:function() {
                    var max=arguments[0];
                for(var i=1;i<arguments.length;i++) {
                    if (max<arguments[i]) {
                        max=arguments[i];
                    }
                }
                return max;
                },
                min:function() {
                        var min=arguments[0];
                for(var i=1;i<arguments.length;i++) {
                    if (min>arguments[i]) {
                        min=arguments[i];
                    }
                }
                return min;
                },
            }
            console.log(MyMath.max(10,1,200,30));
            console.log(MyMath.min(10,1,200,30));
    </script>
</head>
<body>
    
</body>
</html>

静态成员和实例成员的的区别

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script type="text/javascript">
            var MyMath={
                PI:3.1415926,
                max:function(){

                },
                min:function(){

                },
            };
            //工具中使用静态成员
            //静态成员 直接使用对象来调用的
            //MyMath.PI;
            //MyMath.max()
            //当有很多个对象的时候 使用构造函数的形式来创建对象
            //实例成员:构造函数中的成员就是实例成员
            //什么是实例:对象的另一种说法
            function Person(name,age) {
                this.name=name;
                this.age=age;
                this.say=function(){
                    console.log(this.name+':嘿嘿哈哈');
                }
            }
            //通过构造函数创建对象
            var p=new Person('zs',18);
            console.log(p);
            p.say();
    </script>
</head>
<body>
    
</body>
</html>

Date对象

创建 Date 实例用来处理日期和时间。Date 对象基于1970年1月1日(世界标准时间)起的毫秒数。

// 获取当前时间,UTC世界时间,距1970年1月1日(世界标准时间)起的毫秒数
    var now = new Date();
    console.log(now.valueOf()); // 获取距1970年1月1日(世界标准时间)起的毫秒数

Date构造函数的参数

1. 毫秒数 1498099000356        new Date(1498099000356)
2. 日期格式字符串  '2015-5-1'   new Date('2015-5-1')
3. 年、月、日……                new Date(2015, 4, 1)   // 月份从0开始

==- 获取日期的毫秒形式==

var now = new Date();
// valueOf用于获取对象的原始值
console.log(date.valueOf()) 

// HTML5中提供的方法,有兼容性问题
var now = Date.now();   

// 不支持HTML5的浏览器,可以用下面这种方式
var now = + new Date();         // 调用 Date对象的valueOf() 

案例解析

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script type="text/javascript">
           // Math对象和Date对象的区别
           //Math不是一个构造函数,里面提供的是静态成员
           // var MyMath={
           //   PI:3.1415926,
           //   max:function() {
           //       console.log(5);
           //   },
           // };
           //静态成员
          // MyMath.PI;
          //MyMath.max();
          //Date 是一个构造函数,首先要通过new Date() 来创建日期实例(对象),实例成员
          // var d=new Date();
          // console.log(d);//Fri May 04 2018 00:34:08 GMT+0800 (中国标准时间)

          //GMT 格林威治时间  也称为世界标准时间
          //GMT+0800(中国标准时间)
          //距离1970-1-1相差的毫秒数
          // console.log(d.valueOf());

          //日期构造函数
          // 1.空构造函数  获取的是当前时对象
          // var d=new Date();
          // console.log(d);
          // console.log(d.valueOf());

          //2.构造函数中传入   毫秒值
          // var d=new Date(1525365651149);
          // console.log(d);

          //3.可以传入日期形式的字符串
          // var d=new Date('1955-8-8  8:8:8');
          // console.log(d);//Mon Aug 08 1955 08:08:08 GMT+0800 (中国标准时间)
          //4.可以传入数字
          // var d=new Date(1928.8,8);
          // console.log(d);
          // console.log(d.valueOf()); //-1304409600000  因为1928比1970小,所以返回的是负值


          //如何获取日期对象的毫秒值
          // var d=new Date();
          //获取日期对象的毫秒值 不用我们调用
          // console.log(d.valueOf());
           //和valueOf的作用是一样的 获取毫秒值
          // console.log(d.getTime());

           //获取当前时间毫秒值  静态成员
           // var num=Date.now(); //浏览器兼容问题 HTML5中的
           // console.log(num);


           //+在这里取正
           // var num=Number(new Date());
           var num=+new Date();
           console.log(num);
    </script>
</head>
<body>
    
</body>
</html>

==- 日期格式化方法==

toString()      // 转换成字符串
valueOf()       // 获取毫秒值
// 下面格式化日期的方法,在不同浏览器可能表现不一致,一般不用
toDateString()
toTimeString()
toLocaleDateString()
toLocaleTimeString()

==- 获取日期指定部分==

getTime()     // 返回毫秒数和valueOf()结果一样,valueOf()内部调用的getTime()
getMilliseconds() 
getSeconds()  // 返回0-59
getMinutes()  // 返回0-59
getHours()    // 返回0-23
getDay()      // 返回星期几 0周日   6周6
getDate()     // 返回当前月的第几天
getMonth()    // 返回月份,***从0开始***
getFullYear() //返回4位的年份  如 2016

解释说明

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script type="text/javascript">
           // //2017-10-10 10:10:10
           // var d=new Date();
           // //打印日期对象的时候 内部调用了toString()
           // console.log(d);
           // console.log(d.toString());

           // console.log(d.toDateString());//Fri May 04 2018
           // console.log(d.toTimeString());
           //  //01:11:30 GMT+0800 (中国标准时间)
           // console.log(d.toLocaleString()) ;
           //2018/5/4 上午1:11:30

           //获取日期中指定部分
           var d=new Date();
            console.log(d.getFullYear());
            // 注意,月份是从0开始的
            console.log(d.getMonth()+1 );
            console.log(d.getDate());
            console.log(d.getHours());
            console.log(d.getMinutes());
            console.log(d.getSeconds());
    </script>
</head>
<body>
    
</body>
</html>

案例

  • 写一个函数,格式化日期对象,返回yyyy-MM-dd HH:mm:ss的形式
function formatDate(d) {
      //如果date不是日期对象,返回
      if (!date instanceof Date) {
        return;
      }
      var year = d.getFullYear(),
          month = d.getMonth() + 1, 
          date = d.getDate(), 
          hour = d.getHours(), 
          minute = d.getMinutes(), 
          second = d.getSeconds();
      month = month < 10 ? '0' + month : month;
      date = date < 10 ? '0' + date : date;
      hour = hour < 10 ? '0' + hour : hour;
      minute = minute < 10 ? '0' + minute:minute;
      second = second < 10 ? '0' + second:second;
      return year + '-' + month + '-' + date + ' ' + hour + ':' + minute + ':' + second;
    }

案例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script type="text/javascript">
          //写一个函数,格式化日期对象,返回yyyy-MM-dd  HH:mm:ss的形式
          function formatDate(date) {
            //判断参数date是否是日期对象
            //instanceof  instance 实例(对象) of 的
            // console.log(date instanceof Date); //false 表示date这个变量不是通过new Date创建出来的对象 而是传过来的1
            if (!(date instanceof Date)) {
                console.error('date不是日期对象');
                return;
            }
            // console.log(date.getFullYear());
            // console.log(date.getMonth());
             // yyyy-MM-dd  HH:mm:ss的形式
            var year=date.getFullYear(),
                month=date.getMonth()+1,
                day=date.getDate(),
                hour=date.getHours(),
                minute=date.getMinutes(),
                second=date.getSeconds();

                // if(month<10) {
                //  month='0'+month;
                // }
                month=month<10?'0'+month:month;
                day=day<10?'0'+day:day;
                hour=hour<10?'0'+hour:hour;
                minute=minute<10?'0'+minute:minute;
                second=second<10?'0'+second:second;
            return year+'-'+month+'-'+day+' '+hour+':'+minute+':'+second;
          }
          // var d=1;
          // formatDate(d);
          var d=new Date();
          var dateStr=formatDate(d);
          console.log(dateStr); //2018-5-4 8:47:0 返回的是当前时间

            d=new Date(2017,8,9);
           var dateStr=formatDate(d);
           console.log(dateStr);//2017-9-9 0:0:0  
    </script>
</head>
<body>
    
</body>
</html>

==- 计算时间差,返回相差的天/时/分/秒==

function getInterval(start, end) {
  var day, hour, minute, second, interval;
  interval = end - start;
  interval /= 1000;
  day = Math.round(interval / 60 /60 / 24);
  hour = Math.round(interval / 60 /60 % 24);
  minute = Math.round(interval / 60 % 60);
  second = Math.round(interval % 60);
  return {
    day: day,
    hour: hour,
    minute: minute,
    second: second
  }
}

Array对象

  • 创建数组对象的两种方式
    • 字面量方式

    • new Array()

      // 1. 使用构造函数创建数组对象
      // 创建了一个空数组
      var arr = new Array();
      // 创建了一个数组,里面存放了3个字符串
      var arr = new Array('zs', 'ls', 'ww');
      // 创建了一个数组,里面存放了4个数字
      var arr = new Array(1, 2, 3, 4);

// 2. 使用字面量创建数组对象
var arr = [1, 2, 3];

// 获取数组中元素的个数
console.log(arr.length);
  • 检测一个对象是否是数组

    • instanceof
    • Array.isArray() HTML5中提供的方法,有兼容性问题
      函数的参数,如果要求是一个数组的话,可以用这种方式来进行判断
  • toString()/valueOf()

    • toString() 把数组转换成字符串,逗号分隔每一项
    • valueOf() 返回数组对象本身
  • 数组常用方法
    演示:push()、shift()、unshift()、reverse()、sort()、splice()、indexOf()

    // 1 栈操作(先进后出)
    push()
    pop() //取出数组中的最后一项,修改length属性
    // 2 队列操作(先进先出)
    push()
    shift() //取出数组中的第一个元素,修改length属性
    unshift() //在数组最前面插入项,返回数组的长度
    // 3 排序方法
    reverse() //翻转数组
    sort(); //即使是数组sort也是根据字符,从小到大排序
    // 带参数的sort是如何实现的?
    // 4 操作方法
    concat() //把参数拼接到当前数组
    slice() //从当前数组中截取一个新的数组,不影响原来的数组,参数start从0开始,end从1开始
    splice() //删除或替换当前数组的某些项目,参数start, deleteCount, options(要替换的项目)
    // 5 位置方法
    indexOf()、lastIndexOf() //如果没找到返回-1
    // 6 迭代方法 不会修改原数组(可选)
    every()、filter()、forEach()、map()、some()
    // 7 方法将数组的所有元素连接到一个字符串中。
    join()

  • 清空数组

    // 方式1 推荐
    arr = [];
    // 方式2
    arr.length = 0;
    // 方式3
    arr.splice(0, arr.length);

案例

相关文章

  • JS-day05-5.3

    内置对象 JavaScript中的对象分为3种:内置对象、浏览器对象、自定义对象 JavaScript 提供多个内...

网友评论

      本文标题:JS-day05-5.3

      本文链接:https://www.haomeiwen.com/subject/ubcjrftx.html