js红宝石 第五章-基本引用类型

引用值(或对象)是某个特定引用类型的实例

引用类型虽然有点像类,但是却和类不是一个概念

对象被认为是某个特定引用类型的实例,通过构造函数来创建

函数也是一种引用类型,在第十章会专门讲述

5.1 Date

起始时间:1970/1/1/00:00:00

Date.parse() 初始化时间

"月/日/年" "5/23/2003"

"月名 日,年" "May 2/2001"

"周几 月名 日 年 时:分:秒 时区"  "Tue May 23 2019 00:00:00 FGMT-0700"

Date.UTC() 返回当前时间经过的毫秒数(跟起始时间比)

"年 月 日 时 分 秒"  只有年和月是必须的

※月的起始值是0,代表1月

5.1.1 继承的方法

Date型重写了

toLoacaleString() - 2/1/2019 20:00:00 AM

toString() - Thu Feb 2 2019 00:00:00 GMT-0800 (Pacific Standard Time)

valueOf() 直接用<  >  比较UTC返回的毫秒数

5.1.2 日期格式化方法

    let date = new Date()
    console.log(date.toDateString());
    console.log(date.toTimeString());
    console.log(date.toLocaleDateString());
    console.log(date.toLocaleTimeString());
    console.log(date.toUTCString());

 5.1.3 日期/时间组件方法

请查阅MDN文档

Date - JavaScript | MDN (mozilla.org)

5.2 RegExp

ECMAScript通过RegExp支持正则表达式

创建语法:

let expamle = /pattern/flags

pattern可以是任何正则表达式

flags的取值:

g:全局模式,查找所有符合条件的内容

i:不区分大小写

m:多行模式,在遇到换行时会继续

y:粘附模式,只查找lastIndex之后的内容

u:启用Unicode匹配

s:dotAll,表示元字符 ( . ) 匹配所有字符

5.2.1 RegExp实例属性

实际不常用,模式声明中包含

lastIndex

flags

...

5.2.2 RegExp实例方法

主要是exec() 配合捕获组使用

方法只接受用于匹配的字符串,找到了就返回第一个匹配信息的数组,没找到就返回null

test() 返回接受的字符串是否匹配

valueOf() 返回表达式本身

5.3 原始值包装类型

ECMAScript提供了三种特殊引用类型:Boolean,number,String

这些引用类型可以使用其原始类型的方法(类似类)

会经历下面几个步骤

(1)创建一个该特殊类型的实例

(2)调用实例上的特定方法

(3)销毁实例

    let s1 = 'some'
    let s2 = s1.substring(2)

    // 相当于执行了

    let s1 = new String('some')
    let s2 = s1.substring(2)
    s1 = null

5.3.1 Boolean

使用Boolean对象,虽然可以,但是会有很多不必要的麻烦,因此强烈建议使用原始Boolean值

5.3.2 Number

toFixed(xx)  返回指定小数位

toExponential(xx) 返回科学计数法

isInteger() 安全整数

5.3.3 String

length() 返回字符串长度

charAt(x) 返回字符位置

charCodeAt(x) 返回x位置字符的编码

代理对:有时候,js的字符可能使用两个字节表示,所以使用charCodeAt()可能只得到了一部分

fromCodePoint() 根据编码返回字符串(charCodeAt()反方向)

normalize() 字符串规范化

contact() 字符串拼接

contact()可以接收任意参数,所有可以一次性拼接多个字符串

但是使用+号更方便

裁剪

slice(a,b)  截取从a-b的字符串

substring(a,b)  截取从a-b的字符串

substr(a,b) 截取从a开始的b个字符串

a/b有负值时:

slice把所有负值加上length

substr把首个负值加上length,第二个负值当成0

substring把所有负值当成0

位置方法

indexOf()

lastIndexOf()

包含方法

startsWith(s,begin) 以s开头

includes(s,begin) 包含s


trim() 删除前后空格

repeat() 字符串重复拼接

复制字符串,如果长度小于指定长度,则会在一边填充相应字符

padStart()

padEnd()

    let s1 = 'you'
    console.log(s1.padStart(8,'hi'));
    console.log(s1.padEnd(8,'hi'));

迭代和解构

字符串可以通过for-of迭代

[...]解构

    let s = 'abcde'
    for(const c of s){
      console.log(c);
    }
    console.log([...s]);

大小写转换

toLowerCase() toLocaleLowerCase() 

toLocaleUpperCase() toUpperCase()

字符串模式匹配

match()

text.match(pattern) 等价于 pattern.exec(text)

search(pattern)  返回匹配pattern的首字符的位置

字符串位置比较

按照字典序比较

s1.localeCompare(s2)

s2 在 s1前面:1

s2 和 s1相等:0

s2 在 s1后面:-1

5.4 单例内置对象

内置对象时ECMAScript提供的,与宿主环境无关的,开发者不用显式地实例化内置对象

5.4.1 Global

代码不会显式地访问Global对象,但是在全局作用域中定义的变量和函数都会变成Global对象的属性

像是isNaN(),isFinite(),parseInt()等都是Global对象的方法

Global对象的其他方法

1.URL

encodeURI()

encodeURIComponent()

decodeURI()

decodeURIComponent()

encodeURIComponent()和decodeURIComponent()会把所有非字母字符给替换成相应的编码形式

而另外两个只会把空格编为%20

    uri = "https://mp.csdn.net/mp_blog/creation/editor?spm=1000.2115.3001.5352"
    console.log(encodeURI(uri));
    console.log(encodeURIComponent(uri));

2.eval()

这个方法就是一个完整的ECMAScript解释器,把字符串中的语句执行

3.Global对象属性

请自行查阅

4.window对象

window对象被实现为Global对象的代理,在全局作用域中定义的变量和函数都会变成window对象的属性

但是window不只是实现了Global那么简单,在12章会详述

5.4.2 Math

1.Math对象属性

保存了一些特殊值.请自己查阅

2.min和max

可以接受任意多的参数

3.舍入方法

Math.floor() 向下舍入

Math.round() 四舍五入

Math.fround() 返回最接近的单精度浮点数

4.random

Math.random返回一个[0,1)间的数字

let num = math.floor(Math.random() * 10 + 1)

上面的代码选择一个1-10的数字

5.其他方法请自行查阅

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值