zoukankan      html  css  js  c++  java
  • JavaScript学习 Ⅴ

    十. 一些对象

    Date 对象

    Date对象用来表示一个时间

    创建Date对象

    如果直接使用构造函数创建一个Date对象,则会封装为当前代码执行的时间

    var d = new Date();

    创建一个指定的时间对象,需要在构造函数中传递一个表示时间的字符串作为参数

    格式 :月/日/年 时:分:秒

    var d1 = new Date("12/31/1997 11:11:11");

    Date对象方法

    var now = new Date()
    var day = now.getDate();
    console.log(day);
    

    getDate():获取当前时间对象是当月第几天

    getDay():获取当前时间对象是周几 0~6 周日~周六

    getMonth():获取当前时间对象是几月 0~11 一月~十二月

    getFullYear():获取当前时间对象的年份

    getTime():获取当前时间对象的时间戳

    now():获取当前时间戳,可以用于测试代码执行的性能

    Math 对象

    Math和其他对象不同,它不是一个构造函数,属于一个工具类,不用创建对象。

    封装了数学运算的相关的属性和方法。

    Math.abs(num):绝对值

    Math.ceil(num):上舍入(向上取整)

    Math.floor(num):下舍入(向下取整)

    Math.round(num):四舍五入

    Math.random(num):生成0~1之间的随机数

    生成 x~y之间的随机数:Math.round(Math.random()*(y-x)+x)

    Math.max(num1, num2):获取多个数之中的最大值

    Math.min(num1, num2):获取多个数之中的最小值

    Math.pow(x, y):获取x的y次幂

    Math.sprt():开方

    十一. 包装类

    JS提供了三个包装类,通过包装类可以将基本数据类型转换为对象,

    String():将基本数据类型字符串转换为String对象

    Number():将基本数据类型数字转换为Number对象

    Boolean():将基本数据类型布尔值转换为Boolean对象

    注意,在实际应用中基本不会使用基本数据类型对象,如果使用基本数据类型对象,在做比较时可能会带来非预期的结果。

    创建对象

    var num = new Number(3);
    var str = new String("hello");
    var bool = new Boolean(true);
    
    var num1 = new Number(3);
    console.log(num==num1);		// false
    
    var b = new Boolean(false);	// 对象转换为bool时,总是true
    if (b){
        alert("成功运行");
    }
    

    当我们对一些基本数据类型的值去调用相应的属性和方法时,浏览器会临时使用包装类将其转换为对象,然后在调用。调用完后,将其变回基本数据类型。(自动装箱与自动拆箱)

    十二. 字符串

    字符串底层是以字符数组的形式保存的,可以使用index索引

    内建属性 length 可返回字符串的长度:

    var txt = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    var sln = txt.length;
    

    对长字符串换行的最安全做法(但是有点慢)是使用字符串加法:

    document.getElementById("demo").innerHTML = "Hello" + 
    "Kitty!";
    

    charAt():可以返回字符串中指定位置的字符

    charCodeAt():可以返回字符串中指定位置的字符Unicode编码

    fromCharCode():可以根据字符编码去获取字符

    str = "hello world";
    var result = str.charAt(6);
    var result = str.charCodeAt(6);
    var result = String.fromCharCode(72);
    

    indexOf()

    查找字符串中的字符串

    indexOf() 方法返回字符串中指定文本首次出现的索引(位置),lastIndexOf() 方法返回指定文本在字符串中最后一次出现的索引:

    var str = "The full name of China is the People's Republic of China.";
    var pos = str.indexOf("China");
    var pos = str.indexOf("China", 18);
    

    两种方法都接受作为检索起始位置的第二个参数。 lastIndexOf()方法向后进行检索(从尾到头),这意味着:假如第二个参数是 50,则从位置 50 开始检索,直到字符串的起点。

    检索字符串中的字符串

    search() 方法搜索特定值的字符串,并返回匹配的位置,如果没有搜索到则返回-1:

    var str = "The full name of China is the People's Republic of China.";
    var pos = str.search("locate");
    var pos = str.search(/a[bef]c/);	// search 只会查找第一个,即使设置全局匹配也无法生效。
    

    比较 indexOf() 与 search()

    这两种方法是不相等的。区别在于:

    • search() 方法无法设置第二个开始位置参数。
    • indexOf() 方法无法设置更强大的搜索值(正则表达式)。

    提取部分字符串

    有三种提取部分字符串的方法:

    • slice(start, end)
    • substring(start, end)
    • substr(start, length)

    slice() 方法

    slice() 提取字符串的某个部分并在新字符串中返回被提取的部分。

    该方法设置两个参数:起始索引(开始位置),终止索引(结束位置)。

    这个例子裁剪字符串中位置 7 到位置 13 的片段:

    var str = "Apple, Banana, Mango";
    var res = str.slice(7,13);
    res 的结果是:Banana
    

    substring() 类似于 slice()。

    不同之处在于 substring() 无法接受负的索引,而且可以动态调整两个参数的顺序

    substr() 类似于 slice()。

    不同之处在于第二个参数规定被提取部分的长度。

    var str = "Apple, Banana, Mango";
    var res = str.substr(7,6);
    res 的结果是:Banana
    var str = "Apple, Banana, Mango";
    var res = str.substr(-5);
    res 的结果是:Mango
    

    replace()

    替换字符串的内容

    replace()方法用另一个值替换在字符串中指定的值:

    str = "Please visit Microsoft!";
    var n = str.replace("Microsoft", "W3School");
    

    replace()方法不会改变调用它的字符串。它返回的是新字符串。

    默认地,replace()只替换首个匹配。

    如需执行大小写不敏感的替换,请使用正则表达式i(大小写不敏感)

    str = "Please visit Microsoft!";
    var n = str.replace(/MICROSOFT/i, "W3School");
    

    请注意正则表达式不带引号。

    如需替换所有匹配,请使用正则表达式的g标志(用于全局搜索)

    str = "Please visit Microsoft and Microsoft!";
    var n = str.replace(/Microsoft/g, "W3School");
    

    toUpperCase()

    转换为大写和小写

    通过 toUpperCase() 把字符串转换为大写:

    var text1 = "Hello World!";       // 字符串
    var text2 = text1.toUpperCase();  // text2 是被转换为大写的 text1
    

    通过 toLowerCase() 把字符串转换为小写:

    var text1 = "Hello World!";       // 字符串
    var text2 = text1.toLowerCase();  // text2 是被转换为小写的 text1
    

    concat()

    concat() 连接两个或多个字符串

    concat() 方法可用于代替加运算符

    trim()

    trim() 方法删除字符串两端的空白符

    split()

    把字符串转换为数组

    可以通过 split() 将字符串转换为数组:

    var txt = "a,b,c,d,e";   // 字符串
    txt.split(",");          // 用逗号分隔
    txt.split(" ");          // 用空格分隔
    txt.split("|");          // 用竖线分隔
    

    如果省略分隔符,被返回的数组将包含 index [0] 中的整个字符串。
    如果分隔符是 "",被返回的数组将是间隔单个字符的数组:

    var txt = "Hello";       // 字符串
    txt.split("");           // 分隔为字符
    

    可以使用正则表达式进行拆分:

    var txt = "1a2b3c4d5";
    var result = txt.split(/[A-z]/);	// 即使不指定全局匹配,也会自动匹配全局
    

    match()

    根据正则表达式,从一个字符串中将符合要求的内容提取出来,默认情况下match只会找到第一个符合要求的内容,找到后就停止检索。设置正则表达式为全局匹配模式,就会匹配到所有的内容。

    var str = "1a2b3c4d5e6f7";
    result = str.match(/[a-z]/g);
    
  • 相关阅读:
    Dictionaries and lists
    Looping and dictionaries
    Dictionary as a set of counters
    Dictionaries
    List exercise
    Lists and strings
    Copying lists
    Objects and values
    [luoguP1944] 最长括号匹配_NOI导刊2009提高(1)
    [luoguP1868] 饥饿的奶牛(DP)
  • 原文地址:https://www.cnblogs.com/chalan630/p/13080603.html
Copyright © 2011-2022 走看看