JavaScript语言标准内置对象
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects
值属性
这些全局属性返回一个简单值,这些值没有自己的属性和方法。
- Infinity
- NaN
- undefined
- null字面量
- golobalThis
函数属性
全局函数可以直接调用,不需要在调用时指定所属对象,执行结束后会将结果直接返回给调用者。
- eval()
- isFinite()
- isNaN
- parseFloat()
- parseInt()
- decodeURI()
- decodeURIComponent()
- encodeURI
- encodeURIComponent()
- uneval()
- escape()
- unescape()
基本对象
顾名思义,基本对象是定义或使用其他对象的基础。基本对象包括一般对象、函数对象和错误对象。
- Object
- Function
- Boolean
- Symbol
- Error
- EvalError
- RangeError
- ReferfnceError
- SyntaxError
- TypeErrpr
- URIError
数字和日期对象
用来表示数字、日期和执行数学计算的对象。
- Number
- BigInt
- Math
- Date
字符串
用来表示和操作字符串的对象。
- String
- RegExp
可索引的集合对象
这些对象表示按照索引值来排序的数据集合,包括数组和类型数组,以及类数组结构的对象
- Array
- Int8Array
- Uint8Array
- Uint8ClampedArray
- Int16Array
- Uint16Array
- Int32Array
- Uint32Array
- Float32Array
- Float64Array
- BigInt64Array
- BigUint64Array
使用键的集合对象
这些集合对象在存储数据时会使用到键,支持按照插入顺序来迭代元素
- Map
- Set
- WeakMap
- WeakSet
结构化数据
这些对象用来表示和操作结构化的缓冲数据,或使用JSON编码的数据
- ArrayBuffer
- DataView
- JSON
- sharedArrayBuffer
- Atomics
控制抽象对象
- Promise
- Generator
- GeneratorFunction
- AsyncFunction
反射
- Reflect
- Proxy
国际化
为了支持多语言加入的ECMAScript对象
- Intl
- Intl.Collator
- Intl.DateTimeFormat
- Intl.ListFormat
- Intl.NumberFormat
- Intl.PluralRules
- Intl.RelativeTimeFormat
- Intl.Locale
WebAssembly
对象扩展
- 属性简洁表示法
- 属性名表达式:
- 定义对象属性的两种方法
obj.foo=true,obj['a'+'bc']=123
- es5使用字面量方式定义对象只能使用标识符定义属性,es6允许字面量定义对象时用方法二
- 属性名表达式与简介表示法不能同时使用,否则报错。
- 定义对象属性的两种方法
- 对象方法的name属性返回函数名
- Object.is():弥补了NaN不等于自身,+0等于-0,Object.is用来比较两个值严格相等,与相等运算符===的行为基本一致,但NaN等于自身+0不等于-0。
- Object.assign(targer,source):返回目标对象
- 为对象添加属性
- 为对象添加方法
- 克隆对象
- 合并多个对象
- 为属性指定默认值
- 属性的可枚举性
for in
、Object.keys()
、JSON.Stringfy()
、Object.assign()
,都会忽略不可以枚举的属性,只有for in
会返回继承的属性- 所有class的原型的方法都是不可枚举的。
- 只关心自身属性的话使用Objec.keys()替代
for in
- 属性的遍历
- es6一共有5种方法可以遍历对象的属性
- for in:自身和继承的可枚举属性
- Object.keys(obj):自身的所有可枚举属性
- Object.getOwnPropertyNames(obj):包含对象自身的所有属性,包含不可枚举属性
- Object.getOwnPropertySymbols(obj):包含对象自身的所有Symbol属性
- Reflect.ownKeys(obj):返回一个数组,包含对象自身的所有属性,包含不可枚举和Symbol
- 遍历顺序:数值按照数字排序,字符串按照生成时间排序,symbol值的属性,按照生成时间排序。
- proto属性:
- proto是内部属性,只有浏览器部署了这个属性,所以要使用
Object.getPrototypeOf(),Object.setPrototypeOf(),Object.create()
Object.setPrototypeOf()
:第一个参数不是对象会转为对象,是undefined或null报错Object.getPrototypeOf()
:第一个参数不是对象会转为对象,是undefined或null报错
- proto是内部属性,只有浏览器部署了这个属性,所以要使用
- Object遍历
Object.keys()
:返回对象自身的所有可以遍历的键名,不是对象先转为对象,null,undefined报错Object.values()
:返回对象自身的所有可以遍历的键值,同上,字符串会返回字符数组,数值布尔返回空对象。Object.entries
:返回对象自身的所有可以遍历的键值对数组,基本用途是遍历对象的属性,另一个用处是将对象转化为真正的Map结构
对象的扩展运算符
解构赋值:注意复制是浅复制,且必须要放在最后
let{x,y,...z}={x:1,y:2,a:3,b:4}
//x:1 y:2 z:{a:3,b:4}
扩展运算符(…):
let a={...origion}
等同于let a=Object.assign({},origin)
- Object.getOwnPropertyDescriptors()
- Null传导运算符 ``` const firstName=(message &&message.body &&message.body.user &&message.body.usr.firstName)||’default’
const firstName=message?.body?.user?.firstName||’default’; ```