1、对象的属性可以简写 {name} 表示'name:name'
对象的方法可以简写 {fn(){}} 表示'fn:function(){}'
普通对象 就是自己创建的简单对象 '{}'
特异对象 就是修改了 Symbol属性的对象
标准对象 就是标准已经提供的一些特殊行为的对象 Array Date
内建对象 就是运行环境中已经提供的对象 标准对象是内建对象的子集
可计算属性名 用'[变量]:value' 表示可计算属性
Object.is(a,b) 判断类型和值全等
Object.assign({},{}) 混合 后面的覆盖前面的
重复的属性 后面的生效 '{a:123,a:456}'
枚举顺序 'getOwnPropertyNames()' 返回的键 数字按照升序排在最前 后面是其它键按照加入对象的顺序排
原型对象 getPrototypeOf() setPrototypeOf()
对象中的方法有 [[HomeObject]] 属性 表示这是个方法
2、结构复制 let {key} = {key:value} 表示把 后面对象的 'key'对应的位置的值 抽取出来 赋予 'key'这个变量
默认值 let {key='xxx'} = {} 当 后面对象'key' 位置不存在 前面就把 默认的值 赋予 'key' 变量
非同名赋值 let {key:a} = {key:'123'} 将 右边对象的 'key' 位置的值 抽取 赋予 'a' 变量
嵌套 let {key : { key2}} = {key: { key2 : 123}} 将 右侧 'key' 位置值 抽取 赋予 {key2} 然后 再将这个值中的 'key2' 位置抽取 赋予 'key2'变量
数组解构 let [key] = [1,2,3] 将 'key' 在左侧对应的位置取出来 然后找到右侧数组中该数组这个位置的值 赋予 'key'
默认值 let [key=123] = [] 右侧抽取不到值 就将默认值赋予 'key'
不定元素 let [...a] = [1,2,3] 将 '...a' 位置在右侧相同位置 开始到右侧数组结束的所有值 赋予 'a'数组
混合解构 就是有数组有对象 分别找到位置 一层一层 赋值 解构 赋值 。。
解构参数 就是在函数中的形参位置 使用解构 'function a ({key}={key:123}) {}' 将'=' 右侧的'key'位置的值取出 赋值给 形参中的'key' 作为这个形参的默认值
3、Symbol 用来做可计算的键 key = Symbol('这是一个键') {[key]:123}
全局共享Symbol Symbol.for() Symbol.keyFor()
Symbol属性 就是一些接口 普通对象里面实现这些接口就可以让普通对象编程特异对象,拥有特异功能,比如修改instanceof 的返回值
可以操作默认迭代器、创建一个迭代器,实现for of 时候的自定义规则
可以操作with 语句操作对象时候 能访问的元素
还有一些派生类的类型判断的值也可以通过Symbol属性对应的对象接口来改造