010day 对象

一、Math对象
Math 对象。
1:js的内置对象,工具对象,定义了大量的静态方法。用于数学计算的。
还有和数学计算相关的常量。
2:常量。
Math.E // 返回欧拉指数(Euler’s number)
Math.PI // 返回圆周率(PI)
Math.SQRT2 // 返回 2 的平方根
Math.SQRT1_2 // 返回 1/2 的平方根
Math.LN2 // 返回 2 的自然对数
Math.LN10 // 返回 10 的自然对数
Math.LOG2E // 返回以 2 为底的 e 的对数(约等于 1.414)
Math.LOG10E // 返回以 10 为底的 e 的对数(约等于0.434)
3: 工具方法
1弧度===180/Math.PI

<script>
    //常量
    console.log (Math.PI);//3.141592653589793

    //工具方法
    console.log (Math.random());//[0.0-1.0)
    console.log (Math.ceil(1.1));//2
    console.log (Math.floor(2.9));//2
    console.log (Math.sqrt(9));//3
    console.log (Math.tan(45*Math.PI/180));//1
    console.log (Math.sin(30*Math.PI/180));//0.5
    console.log (Math.pow(2,3));//8
    console.log (Math.round(4.5));//5
    console.log (Math.max(1,2,4,54,67,4,3,56,4));//67
    console.log (Math.min(1,2,4,54,67,4,3,56,4));//1
    console.log (Math.abs(-1));//1

</script>

二、Date对象
Date是js用于处理日期和时间的代码库。
Date对象以1970年1月1日为时间原点。
1: Date作为工具方法直接调用。
返回的是一个西方的日期字符串对象。
2:Date作为构造函数使用。
1:无参调用:返回系统当前时间对象。
2:可以传入指定时间的日期字符串。得到的是一个指定日期的对象。
3:静态方法。
Date.now(): 当前的系统时间和时间原点的时间差,以毫秒返回。
1s=1000毫秒
1s
=1000000微秒
1s===1000000000纳秒
Date.parse(str):用于解析时间字符串的。得到传入的参数的时间和时间原点的时间差,毫秒返回。
如果解析不成功返回 NaN
4:实例方法:
a:to 类:将日期对象转换为字符串。**
b:get 类:得到当前日期对象的某些属性的。***
c:set 类:设置当前日期对象的某些属性。**
5:结论:
1:月份的返回值是0-11. 必须做+1操作才能和月份对上。
2:getDay() 的返回值是 0-6 .代表了周日到周六。西方国家的一周的开始的第一天是周日。
3:中国的时区在东八区,-480分钟。
4:日期对象直接相减,返回的是两个时间的毫秒差

<script>
    //1 Date作为工具方法直接调用。
    var date = Date();
    console.log (typeof date);//string
    console.log (date);//Thu Aug 06 2020 09:53:57 GMT+0800 (中国标准时间)

    // 2:Date作为构造函数使用。
    var date = new Date();
    console.log (typeof date);//object
    console.log (date);//Thu Aug 06 2020 09:55:46 GMT+0800 (中国标准时间)
    var date = new Date("2020/10/10 10:10:10");
    console.log (typeof date);//object
    console.log (date);//Thu Aug 06 2020 09:55:46 GMT+0800 (中国标准时间)

    // 3:静态方法。
    var now = Date.now();
    console.log (typeof now);//number
    console.log (now);//1596679208271
    var date = Date.parse("2020/10/10 10:10:10");
    console.log (typeof date);//number
    console.log (date);//1602295810000

    //4:实例方法
    var date = new Date();
    //to 类
    console.log (date.toString());//Thu Aug 06 2020 10:08:53 GMT+0800 (中国标准时间)
    console.log (date.toLocaleString());//2020/8/6 上午10:09:25
    console.log (date.toLocaleDateString());//2020/8/6
    console.log (date.toLocaleTimeString());//上午10:10:54
    console.log (date.toISOString());//2020-08-06T02:11:52.546Z
    console.log (date.toUTCString());//Thu, 06 Aug 2020 02:11:52 GMT
    console.log ("----------------");
    //get 类
    console.log (date.getDay());//4: 周4

    console.log (date.getFullYear());//2020
    console.log (date.getMonth());//8月:[0-11]
    console.log (date.getDate());//6号:6

    console.log (date.getHours());//10
    console.log (date.getMinutes());//16
    console.log (date.getSeconds());//17
    console.log (date.getMilliseconds());//123

    console.log (date.getTimezoneOffset());//-480  480分钟的时差
    console.log (date.getTime());//1596680161124
    console.log (Date.now());//1596680161128

    //set 设置日期对象的属性
    date.setDate(6);//设置到本周日
    console.log (date.toLocaleString());
    console.log (date.getDay());//0


</script>

三、日期练习
1:将当前系统时间转换为指定格式的时间字符串。
格式:xxxx年xx月xx日 星期x xx时xx分xx秒xxx毫秒
2:计算当前时间距离2021-1-1还有多少天?

<script>
    /**
     * 对指定的日期date进行pattern格式的字符串格式化
     * @param date
     * @param pattern
     */
    function formatDate(date,pattern) {
        var year = date.getFullYear();
        var month = date.getMonth() + 1;
        var date1 = date.getDate();

        var week = date.getDay();

        var hours = date.getHours();
        var minutes = date.getMinutes();
        var seconds = date.getSeconds();
        var milliseconds = date.getMilliseconds();

        var result = year+"年"+month + "月"+date1+"日"+" " +  toWeekStr(week) + " " + hours +"时"+minutes+"分"+seconds+"秒"+milliseconds+"毫秒";

        return result;
    }

    //根据day的值返回对应的星期几的字符串
    function toWeekStr(day) {
        var weeks = ["日","一","二","三","四","五","六"];
        return "星期"+weeks[day];
    }

    var date = new Date();
    console.log (formatDate(date));

    //返回两个日期对象的天数的间隔。向上取整。
    function intervalDays(minDate,maxDate) {
        // var minTime = minDate.getTime();
        // var maxTime = maxDate.getTime();
        //两个时间的毫秒的时间差。
        // var interval = maxTime-minTime;
        //日期对象直接相减,返回的是两个时间的毫秒差
        var interval = maxDate-minDate;
        return Math.ceil(interval/dayMillis());
    }

    //一天的毫秒数
    function dayMillis() {
        return 24*60*60*1000;
    }

    console.log (intervalDays(new Date(),new Date("2021-1-1")));

</script>

四、String对象简介
String 对象是js的内置对象。
是js的三大包装对象之一。 Number、Boolean、String
1:工具方法使用。将任意类型转换为字符串。
2:构造函数:创建字符串对象。
3: String对象提供了大量的用于操作字符串实例的方法。

<script>
    // 1:工具方法使用。将任意类型转换为字符串。
    console.log (String({}));//[object Object]
    var obj = {}
    console.log (obj.toString());//[object Object]

    // 2:构造函数:创建字符串对象。
    var str1 = new String("abc");
    var str2 = "abc";
    console.log (typeof str1);//object
    console.log (typeof str2);//string

</script>

五、String对象的创建方式
字符串对象的创建方式:
1:构造函数式。 **
2:字面量直接赋值。基本数据类型string,但是当我们需要将它当对象使用的时候,直接赋值的变量会被转换为对象使用。

<script>
    // 1:构造函数式。
    var str = new String("abc");
    console.log (typeof str);//object
    // 2:字面量直接赋值
    var str1 = "abc";
    console.log (typeof str1);//string
    //下面的代码"abc"会隐式转换为对象。
    console.log ("abc".charAt(1));//6

    //会将基本数据类型的1.使用Number构造函数转换为Object对象。
    (1).toFixed();
</script>

六、String对象的访问方式-类数组方式
String:字符串类型。
字符串对象是若干个字符的集合。
字符串对象的底层实现:底层使用字符数组来存储字符对象中的所有的字符。
字符串对象不是数组。不能使用数组的实例方法。
但是js还给字符串对象提供了一些类似于数组的访问方式来访问字符串。
类数组的访问方式:
1: 可以使用下标来访问字符串中的所有的字符。0序的。自然顺序。
2:字符串也有长度的属性,length,代表了字符的个数。
3: 可以使用基本的for循环,像遍历数组一样的去遍历字符串中的字符。
4:不能使用delete 来删除字符。也不能像数组一样的方式来修改字符。
5:不能使用数组特有的实例方法。
***总结:虽然字符串底层使用了数组,可以使用某些类数组的操作去操作字符串
但是不建议使用这样的方式去访问字符串。应该用它特有的方式去访问。

<script>
    var str = "abc";
    //字符数组的方式访问
    console.log (str[0]);//a
    console.log (str.length);//3
    for (let i = 0; i < str.length; i++) {
        console.log (str[i]);
    };

    //delete str[0];  不能删除
    // str[0] = "A"; 不能修改
    console.log (str);
    // str.reverse();
</script>

七、String的遍历
字符串对象的遍历:
1: 使用基本的for循环,类似于遍历数组
2:for in
3:for of
4: 使用字符串的实例方法。charAt(pos) 获得当前对象上的指定位置的字符

<script>
    var str = "abcdefg";
    //1
    for (let i = 0; i < str.length; i++) {
        var ch = str[i];
        console.log (ch);
    }
    console.log ("--------1---------");

    // 2:for in  i 代表了字符的序号。
    for (var i in str) {
        var ch = str[i];
        console.log (ch);
    }
    console.log ("--------2---------");
    // 3:for of
    for (var ch of str) {
        console.log (ch);
    }
    console.log ("--------3---------");
    // 4:charAt(pos)
    for (let i = 0; i < str.length; i++) {
        var ch = str.charAt (i);
        console.log (ch);
    }
</script>

八、String的特点
***** String的特点:
1:底层实现使用字符数组。
2:字符串对象具有不可改变的特性。字符串对象一旦创建,就不能被修改了。
所有看似对字符串对象的修改,都会导致新的字符串对象的生成。
缺点:如果不断的去修改一个字符串对象,那么会在内存中生成大量不在使用的字符串对象。会造成内存的浪费。
优点:安全。具有只读属性。

<script>
    var num = 1;
    //传值
    var num1 = num;
    num1 = 2;
    console.log (num);//1

    var val1 = new Number(1);
    var val2 = val1;
    val2 = 2;
    console.log (val1);

    var str = "abc";
    var str1 = str;
    str1 = str1 + "d";
    console.log (str1);//abcd
    console.log (str);//abc
</script>

九、String的方法
String的属性:
1:length:字符串对象中的字符的个数。一个大于等于0的值。
空字符串"" 的长度就是0. 也是一个很有地位的字符串对象。
String的静态方法。
** String.fromCharCode(code) 将code整数值,转换为该值所对应的字符。
提示:notice 因为字符串对象具有不可改变的特性。
所以大部分的实例方法,操作当前实例对象,返回值往往是操作之后的结果。
而当前对象往往不发生改变。
String的实例方法:
**charAt(pos) 返回在指定位置的字符。
**charCodeAt(pos) 返回在指定的位置的字符的 Unicode 编码。
concat(str) 连接字符串 返回连接之后的字符串对象。
**indexOf(searchStr,pos?) 检索子字符串。找到返回索引,否则返回-1.支持从指定的位置开始搜索
lastIndexOf(searchStr,pos?) : 检索子字符串.从后往前找。
**replace(oldStr,newStr): 子串替换
**slice(start? , end?):提取字符串的片断,并在新的字符串中返回被提取的部分。
substr(start,length ?): 从什么位置开始,截取length个。
**substring(start,end?) : 基本和slice一致,只是不支持负索引。
**split(separtor): 使用指定的分隔符将当前字符串对象进行切割。切割后的内容以字符串数组返回。 如果分隔符为空字符串,那么就是将字符串转换为字符数组的功能。支持正则。
**toLowerCase() 把字符串转换为小写。
**toUpperCase() 把字符串转换为大写。
**endsWith(suffix,pos?): 是否以指定的内容结尾。返回boolean值。
**startWith(prefix,pos?): 是否以指定的内容开头。返回boolean值。

<script>
    //2 静态方法
    for (let i = 0; i <128 ; i++) {
        var ch = String.fromCharCode(i);
        document.write(ch);
        if(i%100===0)
            document.write("<br>");
    }
    // 实例方法
    var str = "123456789你";
    console.log (str.charAt(5));//6
    var number = str.charCodeAt(9);
    console.log (number);
    console.log (String.fromCharCode(20320));//你

    var concat = str.concat("真坏");
    console.log (str);//123456789你
    console.log (concat);//123456789你真坏

    var index = concat.indexOf("你真坏");
    console.log (index);//9

    str = "1_2_3_4_5";
    var res = str.replace("_","-");
    console.log (res);
    console.log (str);

    str = "1_2_3_4_5";

    function replace(str,oldStr,newStr) {
        var index = str.indexOf(oldStr);
        while(index >=0){
            str = str.replace(oldStr,newStr);
            index = str.indexOf(oldStr);
        }
        return str;
    }
    var result = replace(str,"_","-");
    console.log (result);

    var str = "123456789你";
    console.log (str.slice(2,5));//345
    console.log (str.slice(2));//3456789你
    console.log (str.slice());//123456789你
    console.log (str.slice(-1));//你
    console.log (str.slice(-4,-1));//789

    console.log (str.substring(3));//456789你
    console.log (str.substr(3));//456789你
    console.log (str.substr(3,3));//456

    str = "1_2_3_4_5";
    console.log (str.split("_"));
    console.log (str.split(""));

    str = "hello.jpg";
    console.log (str.endsWith(".jpg"));//true
    console.log (str.startsWith("he"));//true

</script>

十、String的方法
String的其他的实例方法:
** 1:trim() :删除当前字符串中的前导和后导空白字符。
2: padStart():
3: padEnd():
4: repeat():

<script>
    var str = "          a  bc   ";
    var result = str.trim();
    console.log (str);//没有变化
    console.log (result);
    console.log (result.length);
    
    str  = "a";
    var str1 = str.padStart(10,"*");//*********a
    console.log (str1);

    var s = str.padEnd(10,"*");
    console.log (s);//a*********

    var repeat = str.repeat(5);
    console.log (repeat);//aaaaa

</script>

十一、Global对象
Global对象。全局对象。是一个假象的对象。不存在。
在js中规定,所有的方法都要隶属于某一个对象。在js中存在一些全局函数
直接使用的函数,作为工具方法来使用的。
随着js的发展,将一些全局函数归给了window对象和Number对象。
1:isNaN(num):用来判断实参是否是NaN的,如果是返回true,否则false。
2: isFinite(num): 用来判断实参是否是有穷数。如果是返回true,否则false。
3: parseInt(num, radix?): 将实参解析为整数,解析不成功,返回NaN。
4: parseFloat(num): 解析浮点数
5: 在进行网路数据传输的过程中,某些数据是不能直接进行传输的,必须要经过
编码的转换。通过2个方法进行转换。
编码方法: encodeURI 、encodeURIComponent.
encodeURI : 会对中文、空格等字符进行编码。url信息中的冒号,斜杠等不进行编码。
encodeURIComponent:在encodeURI 的基础上,还会对 冒号和 斜杠等进行编码。
***编码:从明文—密文。
***解码:从密文—明文。
decodeURI: 用来解码encodeURI 编码的数据。
decodeURIComponet:用来解码 encodeURIComponent 编码的数据。
使用率比较高的一对编码解码方法:encodeURIComponent、decodeURIComponet
一般编码只对提交的数据部分进行编码。
*** 6:eval(str): 该方法是一个非常强大的方法。可以将实参的内容解析为js代码执行。
全局属性:
NaN、Infinity、-Infinity、Array、Math、Number、String、Boolean、Date

<script>
    var num = "1"/"a";
    console.log (isNaN(num));//true

    console.log (isFinite(1));//true
    console.log (isFinite(Infinity));//false

    console.log (parseInt("23",8));//19
    console.log (parseFloat("12.11111111aaa"));//12.11111111

    var url = "https://news.163.com/?name=小刚&pwd=12 3456";
    //https://news.163.com/?name=%E5%B0%8F%E5%88%9A&pwd=12%203456
    console.log (encodeURI(url));
    url = "https://news.163.com/?name=%E5%B0%8F%E5%88%9A&pwd=12%203456";
    console.log (decodeURI(url));
    // https%3A%2F%2Fnews.163.com%2F%3Fname%3D%E5%B0%8F%E5%88%9A%26pwd%3D12%203456
    console.log (encodeURIComponent(url));
    url = "https%3A%2F%2Fnews.163.com%2F%3Fname%3D%E5%B0%8F%E5%88%9A%26pwd%3D12%203456";
    console.log (decodeURIComponent(url));

    var str = "var value = 10";
    eval(str);
    str = "1*2*3*4*5";
    console.log (eval(str));//120
    console.log (value);//10
</script>
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页