数据类型对象
yuhuo2021-05-25JavaScriptJavaScript对象
Number 类
1. 创建对象
// 创建数字对象
let a = new Number(1);
// 创建数字直接量
let b = 1;
let c = Number(1);
2. 静态属性
静态属性 | 类型 | 描述 |
---|---|---|
MAX_VALUE | number | 最大数 |
MIN_VALUE | number | 最小数 |
MAX_SAFE_INTEGER | number | 最大安全整数 |
MIN_SAFE_INTEGER | number | 最小安全整数 |
POSITIVE_INFINITY | number | 正无穷大 |
NEGATIVE_INFINITY | number | 负 |
NaN | number | 非数字值 |
3. 静态方法
静态方法 | 描述 |
---|---|
isFinite(number: any): boolean | 返回参数是否为有限数字(无隐式转换,非数字都是 false) |
isNaN(number: any): boolean | 返回参数是否为 NaN(无隐式转换,非 NaN 都是 false) |
isInteger(number: any): boolean | 返回参数是否整数为(无隐式转换,注: 1.00 也视为整数) |
isSafeInteger(number: any): boolean | 返回指参数是否为安全范围内的整数 |
parseInt(string: string, radix?: number): number | 返回指定进制的字符串对应的整数 |
parseFloat(string: string): number | 返回指定字符串转对应的浮点数 |
4. 原型方法
原型方法 | 描述 |
---|---|
valueOf(): number | 返回当前数字 |
toString(radix?: number): string | 返回当前数字对应的指定进制的字符串(默认10进制) |
toFixed(digits?: number): string | 返回当前数字进行四舍五入并保留小数点后指定位数的字符串 |
toExponential(digits?: number): string | 返回当前数字进行科学计数法并保留小数点后指定位数的字符串 |
toPrecision(precision?: number): string | 返回 x 位有效值的字符串值,x 小于整数位数则科学计数法 返回当前数字指定有效值位数对应的字符串 |
5. 数字类型
- 整型
- 二进制:
0b11
,0B11
- 十进制:
3
- 八进制:
0o11
,0O11
- 十六进制:
0x11
,0X11
- 二进制:
- 浮点型
- 小数点:
3.14
- 科学计数法:
31.4e-2
,31.4E2
- 小数点:
- 特殊值
- 无限大:
Infinity
- 无限小:
-Infinity
- 非数字:
NaN
- 无限大:
// Infinity的产生
1 / 0 == Infinity
// Infinity加减乘除,结果等于本身
Infinity * 2 / 3 + 2 - 3 == Infinity
// Infinity作除数,结果等于0
2 / Infinity == 0
// NaN的产生
0 / 0
Infinity / Infinity == NaN
Infinity - Infinity == NaN
parseInt("a") == NaN
// NaN与任何数都不相等, 包括自身
NaN != 1
NaN != NaN
// NaN与任何数运算都得NaN
NaN + 1 == NaN
NaN + NaN == NaN
String 类
1. 创建对象
// 创建字符串对象
let a = new String("字符串");
// 创建字符串直接量
let b = "字符串";
let c = String("字符串");
// 模板
let param = "参数";
let fun = function() {
return "方法返回值";
}
let res = `第一行${param}
第二行${fun()}`;
2. 静态方法
静态方法 | 描述 |
---|---|
fromCharCode(...codes: number[]): string | 返回指定 Unicode 编码对应的字符 |
fromCodePoint(...codes: number[]): string | 返回指定 Unicode 编码对应的字符 |
说明
fromCharCode / charCodeAt 不能处理大于 0xFFFF 的 Unicode 编码,ES6 推出 fromCodePoint / codePointAt 补充这个缺点。
3. 原型属性
原型属性 | 类型 | 描述 |
---|---|---|
length | number | 字符串长度 |
[index] | string | 返回指定位置的字符 |
4. 原型方法
原型方法 | 描述 | |
---|---|---|
检索 | charAt(pos: number): string | 返回指定位置的字符 |
charCodeAt(pos: number): number | 返回指定位置字符对应的 Unicode 编码 | |
codePointAt(pos: number): number | 返回指定位置字符对应的 Unicode 编码 | |
indexOf(searchString: string, position?: number): number | 返回匹配值首次出现的位置 | |
lastIndexOf(searchString: string, position?: number): number | 返回匹配值最后出现的位置 | |
match(regexp: string | RegExp): RegExpMatchArray | 返回匹配结果 | |
search(regexp: string | RegExp): number | 返回匹配值的位置 | |
============== | ============== | |
判断 | includes(searchString: string, position?: number): boolean | 返回是否包含子字符串 |
startsWith(searchString: string, position?: number): boolean | 返回是否以指定字符串开头 | |
endsWith(searchString: string, endPosition?: number): boolean | 返回是否以指定字符串结尾 | |
============== | ============== | |
转变 | slice(start?: number, end?: number): string | 返回指定起始和结束位置的新字符串(可为负数) |
substring(start: number, end?: number): string | 返回指定起始和结束位置的新字符串 | |
substr(from: number, length?: number): string | 返回指定起始位置和长度的新字符串 | |
split(separator: string | RegExp, limit?: number): string[] | 返回按指定分隔符分割的字符串数组 | |
concat(...strings: string[]): string | 返回与指定字符串拼接的新字符串 | |
replace(searchValue: string | RegExp, replaceValue: string): string | 返回替换匹配值的新字符串 | |
trim(): string | 返回去除两边空白的新字符串 | |
repeat(count: number): string | 返回重复指定次数的新字符串 | |
padStart(maxLength: number, fillString?: string): string | 返回使用指定字符串在当前字符串起始填充至指定长度的新字符串 | |
padEnd(maxLength: number, fillString?: string): string | 返回使用指定字符串在当前字符串末尾填充至指定长度的新字符串 | |
toLowerCase(): string | 返回小写的新字符串 | |
toUpperCase(): string | 返回大写的新字符串 | |
============== | ============== | |
其他 | toString(): string | 返回当前字符串 |
valueOf(): string | 返回当前字符串 | |
[Symbol.iterator](): IterableIterator | 返回单字符的迭代器对象 |
注意
- 所有方法返回的字符串都是字符串直接量
- 字符串直接量也可以直接使用对象的属性和方法
正则相关说明
- 参数中使用到正则的 4个方法:match,search,split,replace
- match,search 方法参数中的字符串会被转正则,匹配特殊符号需注意
- match 中的正则不带 g 修饰符时,返回格式:[第一匹配结果, $1, $2, ... index: 匹配位置, input: 输入文本]
- match 中的正则带 g 修饰符时,返回格式:[第一匹配结果, 第二匹配结果...]
- split 中的正则使用分组时,结果数组是包含分隔符的,如
"a,b".split(/(,)/)
→['a', ',', 'b']
- replace 中第二个参数是方法时,方法的形参是:(match, $1, $2, ... index, input)
- replace 中第二个参数是字符串时,如下字符有特殊含义
$1
,$2
,...,$99
匹配第1~99个分组里捕获的文本$&
匹配到的子串文本- $` 匹配到的子串的左边文本
$'
匹配到的子串的右边文本$$
美元符号- 示例1:
"2,3,5".replace(/(\d+),(\d+),(\d+)/, "$3=$1+$2")
→'5=2+3'
- 示例2:
"2+3=5".replace(/=/, "$&$'$&")
→'2+3=5=5'
Boolean 类
1. 创建对象
// 创建布尔对象
let a = new Boolean(false);
// 创建布尔直接量
let b = true;
let c = Boolean(true);
2. 原型方法
原型方法 | 描述 |
---|---|
valueOf(): boolean | 返回布尔值 |
toString(): string | 返回布尔值对应的字符串 |
Symbol 类
1. 创建symbol直接量
// Symbol([description])
// description:描述,用于打印和寻找
const symbol = Symbol("post");
2. 静态属性
静态属性 | 类型 | 描述 |
---|---|---|
asyncIterator | symbol | |
hasInstance | symbol | |
isConcatSpreadable | symbol | |
iterator | symbol | 作为返回迭代器对象的方法名 |
match | symbol | |
matchAll | symbol | |
replace | symbol | |
search | symbol | |
species | symbol | |
split | symbol | |
toPrimitive | symbol | |
toStringTag | symbol | |
unscopables | symbol |
3. 静态方法
静态方法 | 描述 |
---|---|
for(key: string): symbol | 返回指定描述的symbol,无则创建后返回 |
keyFor(sym: symbol): string | 返回指定symbol的描述 |
4. symbol使用
// 作为常量,确保与其他常量不会重复
const POST = Symbol("post");
// 定义对象的唯一属性名(此时该属性为私有属性)
let key = Symbol();
let obj = {
[key]: 1
};
obj[key] = 2;
Array 类
1. 创建对象
var a = [];
var b = ["a", "b", "c"];
var c = [...set]; // Set转数组
var d = [...map]; // Map转二维数组
var a = new Array(); // 空数组
var b = new Array(20); // 长度为20的数组
var c = new Array(20, 30, 40); // 参数作为元素创建数组
2. 静态方法
静态方法 | 描述 |
---|---|
of(...items: any[]): any[] | 返回参数作为元素的数组 |
`from(arrayLike: string | Set |
isArray(arg: any): boolean | 返回参数是否为数组 |
var a = Array.of(); // 空数组
var b = Array.of(20); // 参数作为元素创建数组
var c = Array.of(20, 30, 40);
var a = Array.from('abc'); // 字符串转数组
var b = Array.from(set); // Set转数组
var c = Array.from(map); // Map转数组
var d = Array.from({ //属性名为数值并且有length属性的对象转数组
0: 'a',
1: 'b',
length: 2
})
3. 原型属性
原型属性 | 类型 | 描述 |
---|---|---|
length | number | 数组长度 |
[index] | any | 指定位置的元素 |
4. 原型方法
原型方法 | 描述 | |
---|---|---|
改变 | push(...items: any[]): number | 末尾添加元素,返回数组长度 |
pop(): any | 末尾移除元素,返回移除的元素 | |
unshift(...items: any[]): number | 开头添加元素,返回数组长度 | |
shift(): any | 开头移除元素,返回移除的元素 | |
sort(compareFn?: (a: any, b: any) => number): any[] | 按指定方法(根据返回正负数判断,a-b则从小到大排,b-a则从大到小排)进行排序,返回原对象(默认从小到大排序) | |
reverse(): any[] | 反转元素排列顺序,返回原对象 | |
splice(start: number, deleteCount?: number, ...items?: any[]): any[] | 从指定位置删除指定数量的元素,并插入新元素,返回被删部分的新数组 | |
fill(value: any, start?: number, end?: number): any[] | 使用具体值填充指定开始结束序号范围,返回原对象 | |
copyWithin(target: number, start: number, end?: number): any[] | 使用指定开始结束序号范围的元素填充目标序号,返回原对象 | |
============== | ============== | |
不变 | toString(): string | 返回通过逗号连接成的字符串 |
join(separator?: string): string | 返回通过指定分隔符(默认逗号)连接成的字符串 | |
concat(...items: any[]) | 与多个元素或数组拼接,返回新数组 | |
slice(startIndex [, endIndex]) | 从指定起始和结束位置(默认末尾)提取数组(可为负数) | |
indexOf(searchElement: any, fromIndex?: number): number | 返回从指定起点(默认开头)往末尾查找指定元素的序号 | |
lastIndexOf(searchElement: any, fromIndex?: number): number | 返回从指定起点(默认末尾)往开头查找指定元素的序号 | |
includes(searchElement: any, fromIndex?: number): boolean | 返回从指定起点(默认开头)往末尾查找是否包含指定元素 | |
flat(depth: number): any[] | 返回扁平化数组 | |
============== | ============== | |
遍历 | forEach(fn: (value: any, index: number, array: any[]) => void, thisArg?: any): void | 遍历数组 |
map<U>(fn: (value: any, index: number, array: any[]) => U, thisArg?: any): U[] | 处理数组每一项,返回新数组 | |
filter<S>(fn: (value: any, index: number, array: any[]) => boolean, thisArg?: any): S[] | 过滤数组每一项,返回新数组 | |
every(fn: (value: any, index: number, array: any[]) => boolean, thisArg?: any): boolean | 判断是否所有元素都满足条件,返回布尔结果 | |
some(fn: (value: any, index: number, array: any[]) => boolean, thisArg?: any): boolean | 判断是否有一个元素满足条件,返回布尔结果 | |
find(fn: (value: any, index: number, array: any[]) => boolean, thisArg?: any): any | 查找符合条件的第一个元素 | |
findIndex(fn: (value: any, index: number, array: any[]) => boolean, thisArg?: any): number | 查找符合条件的第一个元素的序号 | |
reduce(fn: (previousValue: any, currentValue: any, currentIndex: number, array: any[]) => any, initValue: any): any | 从头累加计算,返回计算结果 | |
reduceRight(fn: (previous: any, value: any, index: number, array: any[]) => any, initValue: any): any | 从尾累加计算,返回计算结果 | |
============== | ============== | |
其他 | [Symbol.iterator](): IterableIterator | 返回数组元素的迭代器对象 |
注意
数组的序号本质上是对象属性,元素是属性值。即属性相关操作对数组是同样起效的。
Set 类
1. 创建对象
var a = new Set(); // 空Set
var b = new Set([1, 2, 2]); // 数组转Set
var c = new Set('hello'); // 字符串转Set
2.原型属性
原型属性 | 类型 | 描述 |
---|---|---|
size | number | Set长度 |
3. 原型方法
原型方法 | 描述 |
---|---|
add(value: any): Set | 添加一个元素,返回原对象 |
has(value: any): boolean | 判断是否包含该元素 |
delete(value: any): boolean | 删除一个元素,返回是否删除成功 |
clear(): void | 清空元素 |
keys(): IterableIterator | 返回 value 的迭代器对象 |
values(): IterableIterator | 同 keys() |
[Symbol.iterator](): IterableIterator | 同 keys() |
entries(): IterableIterator | 返回 [value, value] 的迭代器对象 |
forEach(fn: (value: any, value2: any, set: Set) => void, thisArg?: any): void | 遍历Set |
Map 类
1. 创建对象
var a = new Map(); // 空Map
var b = new Map([["key1", "value1"], ["key2", "value2"]]); // 二维数组转Map
var c = new Map(b); // 克隆另一个Map
2. 原型属性
原型属性 | 类型 | 描述 |
---|---|---|
size | number | Map键值对数量 |
3. 原型方法
原型方法 | 描述 |
---|---|
set(key: any, value: any): Map | 添加或修改键值对,返回原对象 |
get(key: any): any | 返回指定键名对应的值 |
delete(key: any): boolean | 删除键值对,返回是否删除成功 |
clear(): void | 清空所有键值对 |
has(key: any): boolean | 返回是否包含指定键名 |
keys(): IterableIterator | 返回 key 的迭代器对象 |
values(): IterableIterator | 返回 value 的迭代器对象 |
entries(): IterableIterator | 返回 [key, value] 的迭代器对象 |
[Symbol.iterator](): IterableIterator | 同 entries() |
forEach(fn: (value: any, key: any, map: Map) => void, thisArg?: any): void | 遍历Map |