学习《JavaScript高级程序设计》----day03

本文详细介绍了JavaScript中的Date对象,包括创建、Date.parse(), Date.UTC(), Date.now()等方法的使用。同时讲解了正则表达式(RegExp)的模式标记及实例方法。还探讨了原始值包装类型Boolean, Number, String的相关方法。最后,讨论了Global对象中的URL编码方法和eval()函数。

系列文章
Chapter01—基础篇



一、Date和RegExp

1.Date:

  • 创建Date对象
    使用new操作符来调用Date构造函数,例如:
    let date = new Date();
    
  • Date.parse():
    它接受以下几种参数之一(String 类型),并返回一个表示该日期的毫秒(Number类型);该方法会被Date构造函数隐式调用
    1.“月/日/年”,如“5/6/2022”
    2.“月名 日, 年”,如“May 23, 2022”
    3.“周几 月名 日 年 时:分:秒:时区”
    4.“YYYY-MM-DDTHH:mm:ss:sssZ”
    const t = Date.parse("5/6/2022");
    console.log(t); // 1651766400000
    console.log(typeof t); // number
    let date1 = new Date(t); //Fri May 06 2022 00:00:00 GMT+0800 (中国标准时间)
    
    //隐式调用parse()
    let date2 = new Date("5/6/2022"); //Fri May 06 2022 00:00:00 GMT+0800 (中国标准时间)	
    
  • Date.UTC():
    Date.parse()功能类似,它接收参数的次序依次是年、月(0–11)、日、时分、秒、毫秒,返回毫秒数,其中年和月是必须的 该方法会被Date构造函数隐式调用
    const t = Date.UTC(2022, 5);
    console.log(t); // 1654041600000
    let date1 = new Date(t); // Wed Jun 01 2022 08:00:00 GMT+0800 (中国标准时间)
    
    
    //隐式调用UTC()
    let date2 = new Date(2022, 5); // Wed Jun 01 2022 08:00:00 GMT+0800 (中国标准时间)
    
    
  • Date.now():
    返回该方法执行时的日期和时间的毫秒数。
    let now = Date.now();
    
  • toString():
    返回带时区信息的日期和时间,如“Thu Jun 02 2022 08:42:22 GMT+0800 (中国标准时间)”。
    let date = new Date(2022, 5);
    console.log(date.toString()); // Wed Jun 01 2022 08:00:00 GMT+0800 (中国标准时间)
    
  • toLocaleString():
    返回“YYYY/MM/DD HH:mm:ss”格式的时间,如“2022/5/6 00:00:00”。
    let date = new Date(2022, 5);
    console.log(date.toLocaleString()); // 2022/6/1 00:00:00
    
  • valueOf():
    返回日期和时间的毫秒数,“1655987685010”。
    let date = new Date(2022, 5);
    console.log(date.valueOf()); // 1654012800000
    
  • 日期格式化方法
    1.toDateString():返回 “周几 月 日 年”, 如“Thu Jun 02 2022”。
    2.toTimeString():返回带时区的“HH:mm:ss 时区”,如"08:52:15 GMT+0800 (中国标准时间)"。
    3.toLocaleDateString():返回“YYYY/MM/DD”,如“2022/05/06”。
    4.toLocaleTimeString():返回“HH:mm:ss”,如“12:23:23”。
    5.toUTCString():返回“周几,日 月 年 时:分:秒 GMT。

2.RegExp:

  • 正则匹配模式的标记
    1.g:全局模式,表示查找字符串的全部内容。
    2.i:忽略大小写模式。
    3.m:多行模式,表示查找到一行文本末尾时会继续查找。
    4.y:粘附模式,表示只查找从lastIndex开始及之后的字符串。
    5.u:Unicode模式,开启Unicode匹配。
    6.s:dotAll模式,表示元字符,匹配任何字符。

  • 正则实例方法:
    1.exec():返回一个数组或者null。
    2.test():返回布尔值。

    let pattern = /(.at){1,}/g;
    console.log(pattern.exec("That boy is strong, he likes cat"));
    console.log(pattern.test("That boy is strong, he likes cat"));
    

二、原始值包装类型

1.Boolean

Boolean是对应布尔值的引用类型,通过new操作符来创建一个Boolean对象;较少使用。

let booleanObj = new Boolean(true);

2.Number

Number是对应布尔值的引用类型,通过new操作符来创建一个Number对象。

let numberObj = new Number(true);

相关方法

  • toFixed(n):返回一个小数位保留n位的字符串数字。
  • sInteger(),isSafeInteger():判断一个数是否是整数,或安全整数。
  • 代码示例
    const numberObj = new Number("23.5");
    console.log(typeof numberObj.toFixed(0));//string
    console.log(Number.isInteger(23));//true
    console.log(Number.isSafeInteger(2**55));//false,不是安全整数
    

3.String

String是对应布尔值的引用类型,通过new操作符来创建一个String对象。

let stringObj = new String("false");

相关方法:

  • charAt():返回给定索引位置的字符。
  • charCodeAt():返回给定字符的字符编码。
  • codePointAt():接收十六位码元的索引值并返回该索引位置上的码点,码点是Unicode中的一个字符的完整标识符。
  • fromCodePoint(): 接收任意数量的码点,并返回对应字符拼接的字符串。
  • fromCharCode(): 接收一个字符编码,并返回对应的字符。
  • concat(): 将一个或多个字符串拼接成一个新的字符串并返回。
  • slice(),substring(),substr(): 返回一个子串。
  • indexOf():返回给定字符所在字符串的索引值。
  • startWith()endWith()includes(): 判断一个字符串中是否包含另一个字符串。
  • trim(): 将字符串前后的空格去掉并得到一个新字符串,返回这个新字符串。
  • repeat():将给定字符串复制多次并返回。
  • padStart()padEnd():填充字符,并返回一个新的字符串,默认填充为空格字符。
  • toUpperCase()toLocaleUpperCase()toLowerCase()toLocaleLowerCase():大小写转换。
  • match():与RegExp的exec()方法类似。
  • search():在字符串中查找给定正则模式的子串的开始位置。
  • replace():字符串替换。
  • localCompare():按照字母表顺序比较两个字符串,并返回(0, -1, 1)中的一个值。
  • 代码示例:
    console.log("c".charCodeAt());
    console.log(String.fromCharCode(65));//A
    console.log(strObj.charAt(2));
    console.log(String.fromCodePoint(128525));//😍
    console.log("😊".codePointAt());
    console.log(strObj.slice(1, 2));//3
    console.log(strObj.substr(1, 2));//34
    console.log(strObj.substring(1, 2));//3
    console.log(strObj.indexOf("2"));//0
    console.log("   assd   ".trim());//assd
    console.log("ha ".repeat(6)+`😍`);
    console.log("1213".padStart(1));
    console.log("1213".padEnd()+"123");
    console.log("12werd".toUpperCase());
    console.log("12werd".toLocaleUpperCase());
    console.log("12weGGGrd".toLocaleLowerCase());
    console.log("1234124".match(/\d/g));
    console.log("12ddqdGG".search(/[A-Z]/g));
    console.log("ha ha ha ha".replace(/ha/g, `😍`));
    console.log("ha".localeCompare(`ia`));//-1
    

三、 Global对象

当一个函数在没有明确指定this值的情况下执行时,this值等于Global对象;在浏览器中window作为Global的代理对象

1.URL编码:

  • encodeURI()encodeURIComponent():
    两个方法功能类似,都是进行编码,但是前者不会编码 属于URL组件的特殊字符,如冒号,斜杠,问好等。
  • decodeURI()decodeURIComponent():
    两个方法功能类似,都是进行解码,但是前者不会编码 属于URL组件的特殊字符,如冒号,斜杠,问好等。
  • 代码示例
    const uri = "http://www.work.com/illegal value.js#start";
    const deuri = "http%3A%2F%2Fwww.work.com%2Fillegal%20value.js%23start"
    console.log(encodeURI(uri)); //http://www.work.com/illegal%20value.js#start
    console.log(encodeURIComponent(uri)); //http%3A%2F%2Fwww.work.com%2Fillegal%20value.js%23start
    console.log(decodeURIComponent(deuri)); //uri
    console.log(decodeURI(`http://www.work.com/illegal%20value.js#start`)); //uri
    

2.eval():

它就是一个完整的ECMAScript解释器。

eval("console.log(Math.max(23, 45));"); // 45
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值