工具对象

yuhuo2021-06-13JavaScriptJavaScript对象

Math 对象

1. 对象属性

属性类型描述
PInumber返回圆周率
Enumber返回自然对数
SQRT2number返回根号2
SQRT1_2number返回根号0.5
LN2number返回自然对数 e 为底的 2 的对数
LN10number返回自然对数 e 为底的 10 的对数
LOG2Enumber返回 2 为底的自然对数 e 的对数
LOG10Enumber返回 10 为底的自然对数 e 的对数

2. 对象方法

原型方法描述
ceil(x: number): number向上舍入
floor(x: number): number向下舍入
round(x: number): number四舍五入
abs(x: number): number绝对值
max(...values: number[]): number最大值
min(...values: number[]): number最小值
random(): number0~1随机数(不包括1)
sign(x: number): number判断数字符号,正 1,负-1,零 0
sin(x: number): number正弦(弧长 arc = 角度 * PI / 180)
cos(x: number): number余弦
tan(x: number): number正切
asin(x: number): number反正弦
acos(x: number): number反余弦
atan(x: number): number反正切
sqrt(x: number): number平方根
cbrt(x: number): number立方根
hypot(...values: number[]): number所有参数的平方和的平方根
pow(x: number, y: number): numberx 的 y 次方
exp(x: number): number自然对数 e 的 x 次方
log(x: number): number自然对数 e 为底的 x 的对数
log10(x: number): number10 为底的 x 的对数
log2(x: number): number2 为底的 x 的对数

JSON 对象

1. 对象方法

对象方法描述
stringify(value[, replacer, space])open in new window值转字符串
parse(text[, reviver])open in new window字符串转值
原值转字符串
1'1'
"abc"'"abc"'
false'false'
nullNaNInfinity'null'
undefinednew Function()单独:undefined,数组中:'null',对象中:移除字段
new Error()new RegExp()'{}'
{}'{}'
[]'[]'

stringify

  • 对象只能转自身可枚举的属性
  • 对象存取器属性会变成数据属性
  • 如果对象包含toJSON()方法,则会以该方法返回值作为stringify的参数

Date 类

1. 创建对象

// 当前时间
var date = new Date();
// 指定时间戳
var date = new Date(1630401884000);
// 指定时间对象
var date = new Date(new Date());
// 指定时间字符串(日期部分的间隔./-空格都可以,/兼容性高)
var date = new Date("2021/06/12 12:13:14.155");

2. 静态方法

静态方法描述
parse(s: Date | string): number指定时间的毫秒数
now(): number当前时间的毫秒数

3. 原型方法

原型方法描述
getTime(): number返回毫秒数
setTime(time: number): number设置毫秒数
valueOf(): number返回毫秒数
toString(): string返回时间字符串
toLocaleString(): string返回时间本地字符串
getFullYear(): number返回年份
setFullYear(year: number, month?: number, date?: number): number设置年份,返回毫秒数
getMonth(): number返回月份(0~11)
setMonth(month: number, date?: number): number设置月份,返回毫秒数
getDate(): number返回日期
setDate(date: number): number设置日期,返回毫秒数
getDay(): number返回星期(0~6)
getHours(): number返回小时
setHours(hours: number, min?: number, sec?: number, ms?: number): number设置小时,返回毫秒数
getMinutes(): number返回分钟
setMinutes(min: number, sec?: number, ms?: number): number设置分钟,返回毫秒数
getSeconds(): number返回秒
setSeconds(sec: number, ms?: number): number设置秒,返回毫秒数
getMilliseconds(): number返回毫秒
setMilliseconds(ms: number): number设置毫秒,返回毫秒数

备注

  • UTC 时间:在 get 和 set 后插入UTC,如 getUTCFullYear()
  • 毫秒数:从1970年开始计起毫秒数

RegExp 类

参考链接

1. 创建对象

var regex = new RegExp("abc", "i");
// 字面量方式,更加高效便利直观
var regex = /abc/i;

2. 原型属性

原型属性类型描述
lastIndexnumber下一次开始搜索的位置
sourcestring查看正则表达式字符串形式(只读)
/abc/g.source"abc"
globalboolean是否设置了 g 修饰符 (只读)
ignoreCaseboolean是否设置了 i 修饰符 (只读)
multilineboolean是否设置了 m 修饰符(只读)
flagsstring已设置的所有修饰符,按字母排序(只读)
/abc/img.flags"gim"

lastIndex

  • lastIndex 只有与 g 修饰符结合使用时才有意义。
  • 执行多次 test 或 exec 时,lastIndex 会自动设为上一次匹配的后一个位置,也可手动修改 lastIndex 的值。

3. 原型方法

原型方法描述
test(string: string): boolean检测字符串是否匹配
exec(string: string): RegExpExecArray返回匹配结果,格式如下:
[第N匹配结果, 第一括号, 第二括号..., index: 匹配序号, input: 输入文本]

4. 字符匹配

(1)基本

  • /abc/ 包含 abc
  • /[^a]bc/ 取反, 包含 不是a + bc
  • /(good|nice)/ 分支,包含 good 或者 nice
  • /abc/g 全局匹配,默认匹配第一个
  • /abc/i 忽略大小写
  • /abc/m 影响 ^ 和 $,使其变成行头行尾

(2)量词

  • {m,n} m ~ n 个
  • {m,} 至少 m 个(注意没有 {,n}
  • {m} = {m,m} m 个
  • ? = {0,1} 至多1个
  • + = {1,} 至少1个
  • * = {0,} 任意个
  • {m,n}???+?*? 加 ?,惰性匹配,当最少数量匹配时即按最少的(默认是贪婪匹配)

(3)字符组

  • /a[123]b/ 包含 a + (123任一值) + c
  • /[1-9a-zA-Z]/ 包含(1~9 或 a~z 或 A~Z 任一值)
  • /[-az][az-][a\-z]/ 包含(-az 任一值),不写成 a-z
  • \d = [0-9] 数字
  • \D = [^0-9] 非数字
  • \w = [0-9a-zA-Z_] 单词(数字字母下划线)
  • \W = [^0-9a-zA-Z_] 非单词
  • \s = [\t\v\n\r\f] 空白符(空格/水平制表/垂直制表/换行/回车/换页)
  • \S = [^\t\v\n\r\f] 非空白符
  • . = 通配符,除了换行符/回车符/行分隔符/段分隔符
  • [\d\D] = [\w\W] = [\s\S] = [^] 所有字符

(4)匹配特殊字符,加 \

  • 正斜杠 \/
  • 反斜杠 \\
  • 点号 \.
  • 星号 \*

5. 位置匹配

  • ^ 匹配开头
  • $ 匹配结尾
  • \b 单词边界
  • \B 非单词边界
  • (?=p) p 前面的位置
    • 示例:"hello".replace(/(?=l)/g, '#')"he#l#lo"
  • (?!p) 非 p 前面的位置
    • 示例:"hello".replace(/(?!l)/g, '#')"#h#ell#o#"

6. 括号

  • 分组
    • 示例:/(ab){2}/.test("ababc")true
  • 分支
    • 示例:/(good|nice)/ 匹配包含 good 或者 nice
  • 正向引用
    • 示例1:/(\d{4})-(\d{2})-(\d{2})/.exec("2017-06-12")["2017-06-12", "2017", "06", "12", index: 0, input: "2017-06-12"]
    • 示例2:"2017-06-12".match(/(\d{4})-(\d{2})-(\d{2})/) → 同上
    • 示例3:RegExp.$1RegExp.$9,提取最近一次正则操作的第1~9个括号的数据(正则操作包括 RegExp 的 test / exec 方法,String 的 match / search / replace / split 方法)
    • 示例4:"2017-06-12".replace(/(\d{4})-(\d{2})-(\d{2})/, "$2/$3/$1") → `"06/12/2017"
  • 反向引用
    • 示例:var regex = /\d{4}(-|\/)\d{2}\1\d{2}/\N 表示匹配与第N个括号相同的字符,即:regex.test("2017-06-12")trueregex.test("2017/06/12")trueregex.test("2017-06/12")false。当括号嵌套时以左括号为准开始算,没有对应括号时则匹配 \N 字符本身
  • 非捕获分组 (?:p) ,正向引用和反向引用都不起作用
    • 示例:/(?:\d{4})-(?:\d{2})/.exec("Time:2017-06")["2017-06", index: 5, input: "Time:2017-06"]

7. 优先级

(从上至下,由高到低)

  • 转义符 \
  • 括号和方括号 (...)(?:...)(?=...)(?!...)[...]
  • 量词 {m}{m,n}{m,}?*+
  • 位置和序列 ^$\元字符一般字符
  • 管道符 |

URL 类

1. 创建对象

// new URL(url [, base])
// 绝对路径
var url1 = new URL("https://baidu.com/a/b");
// 相对路径
var url2 = new URL("b", "https://baidu.com/a/");
var url3 = new URL("/a/b", new URL("https://baidu.com/c/d"));
// 以上方式生成的url都是 https://baidu.com/a/b

2. 静态方法

静态方法描述
createObjectURL(obj: MediaSource | Blob): string创建对象链接(链接协议为 blob:)
revokeObjectURL(url: string): void销毁对象链接

3. 原型属性

原型属性类型描述
hrefstring完整 URL(http://username:password@127.0.0.1:5502/WebNote/demo.html?search=a#hash)
originstring协议 + 主机名 + 端口(http://127.0.0.1:5502)
protocolstring协议(http:)
usernamestring主机名前的用户名(username)
passwordstring主机名前的密码(password)
hoststring主机名 + 端口(127.0.0.1:5502)
hostnamestring主机名(127.0.0.1)
portstring端口(5502)
pathnamestring路径(/WebNote/demo.html)
searchstring查询(?search=key)
hashstring锚(#hash)
searchParamsURLSearchParams返回查询参数对象

4. 原型方法

原型属性描述
toString(): string返回完整 URL
toJSON(): string返回完整 URL

URLSearchParams 类

1. 创建对象

// 来自URL对象
var url = new URL("https://baidu.com/a/b");
var params1 = url.searchParams;

// 构造函数
var params2 = new URLSearchParams("?foo=1&bar=2"); // 带不带?都可以
var params3 = new URLSearchParams([["foo", 1],["bar", 2]]);
var params4 = new URLSearchParams({ foo: 1, bar: 2 });

2. 原型方法

原型方法描述
append(name: string, value: string): void追加一个指定的键值对
delete(name: string): void根据键删除键值对
sort(): void按键名排序
set(name: string, value: string): void设置键值对(该键原本的单/多个值将被删除)
get(name: string): string返回指定键的值
has(name: string): boolean返回是否存在指定键名
getAll(name: string): string[]返回所有值的数组
keys(): IterableIterator返回键名的迭代器对象
values(): IterableIterator返回值的迭代器对象
entries(): IterableIterator返回键值数组的迭代器对象
toString(): string返回键值字符串(不带?)

Reflect 对象

1. 静态方法

静态方法描述
apply(target: Function, thisArg: any, argArray: any[]): any指定方法的 this 对象运行方法
construct(target: Function, argArray: any[], newTarget?: Function): any方法作为构造方法
defineProperty(target: Object, key: string | symbol, attributes: PropertyDescriptor): boolean目标对象定义或修改属性描述对象,返回是否成功
getOwnPropertyDescriptor(target: Object, key: string | symbol): PropertyDescriptor返回目标对象指定自有属性的描述对象
set(target: object, propertyKey: string | symbol, value: any, thisArg?: any): boolean目标对象定义或修改自有属性值,返回是否成功
get(target: Object, key: string | symbol, thisArg?: any): any返回目标对象指定自有属性的值
deleteProperty(target: Object, key: string | symbol): boolean删除自有属性,返回是否成功
has(target: object, key: string | symbol): boolean返回属性是否存在
ownKeys(target: object): (string | symbol)[]返回目标对象所有的自有属性名称的数组
isExtensible(target: object): boolean返回目标对象是否可拓展
preventExtensions(target: object): boolean设置目标对象为不可扩展,返回成功
getPrototypeOf(target: object): object返回目标对象的原型对象
setPrototypeOf(target: object, proto: object): boolean设置目标对象的原型对象,返回是否成功
Last Updated 2024/5/11 17:27:33