数据类型对象

yuhuo2021-05-25JavaScriptJavaScript对象

Number 类

1. 创建对象

// 创建数字对象
let a = new Number(1);

// 创建数字直接量
let b = 1;
let c = Number(1);

2. 静态属性

静态属性类型描述
MAX_VALUEnumber最大数
MIN_VALUEnumber最小数
MAX_SAFE_INTEGERnumber最大安全整数
MIN_SAFE_INTEGERnumber最小安全整数
POSITIVE_INFINITYnumber正无穷大
NEGATIVE_INFINITYnumber
NaNnumber非数字值

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. 数字类型

  • 整型
    • 二进制:0b110B11
    • 十进制:3
    • 八进制:0o11 0O11
    • 十六进制:0x110X11
  • 浮点型
    • 小数点:3.14
    • 科学计数法:31.4e-231.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. 原型属性

原型属性类型描述
lengthnumber字符串长度
[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. 静态属性

静态属性类型描述
asyncIteratorsymbol
hasInstancesymbol
isConcatSpreadablesymbol
iteratorsymbol作为返回迭代器对象的方法名
matchsymbol
matchAllsymbol
replacesymbol
searchsymbol
speciessymbol
splitsymbol
toPrimitivesymbol
toStringTagsymbol
unscopablessymbol

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: stringSet
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. 原型属性

原型属性类型描述
lengthnumber数组长度
[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.原型属性

原型属性类型描述
sizenumberSet长度

3. 原型方法

原型方法描述
add(value: any): Set添加一个元素,返回原对象
has(value: any): boolean判断是否包含该元素
delete(value: any): boolean删除一个元素,返回是否删除成功
clear(): void清空元素
keys(): IterableIterator返回 value 的迭代器对象
values(): IterableIteratorkeys()
[Symbol.iterator](): IterableIteratorkeys()
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. 原型属性

原型属性类型描述
sizenumberMap键值对数量

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](): IterableIteratorentries()
forEach(fn: (value: any, key: any, map: Map) => void, thisArg?: any): void遍历Map
Last Updated 2024/3/14 09:51:53