Object.keys() 静态方法返回一个由给定对象自身的可枚举的字符串键属性名组成的数组。
Object.values() 静态方法返回一个给定对象的自有可枚举字符串键属性值组成的数组。
Object.getOwnPropertyNames() 静态方法返回一个数组,其包含给定对象中所有自有属性
(包括不可枚举属性,但不包括使用 symbol 值作为名称的属性)
Object.getOwnPropertySymbols() 静态方法返回一个包含给定对象所有自有 Symbol 属性的数组。
Symbol.for() 类似单例模式,首先会在全局搜索被登记的 Symbol
中是否有该字符串参数作为名称的 Symbol 值,如果有即返回该 Symbol 值,
若没有则新建并返回一个以该字符串参数为名称的 Symbol 值,并登记在全局环境中供搜索。
Symbol.keyFor() 返回一个已登记的 Symbol 类型值的 key ,用来检测该字符串参数作为名称的 Symbol 值是否已被登记。
Map()对象有size个数与object没有长度
Map 构造函数可以将一个 二维 键值对数组转换成一个 Map 对象
使用 Array.from 函数可以将一个 Map 对象转换成一个二维键值对数组
Map的特性
Map 对象保存键值对。任何值(对象或者原始值) 都可以作为一个键或一个值。
Map 对象记得键的原始插入顺序。
Map 对象具有表示映射大小的属性。
Map 对象的几个常用方法和属性
new Map() 创建新的 Map 对象。
set() 为 Map 对象中的键设置值。
get() 获取 Map 对象中键的值。
entries() 返回 Map 对象中键/值对的数组。
keys() 返回 Map 对象中键的数组。
values() 返回 Map 对象中值的数组。
共同点
二者都是以key-value的形式对数据进行存储;
不同点
key的数据类型范围不同
obj可以作为key的仅有number、string、symbol。
map均可以。
key的顺序不同。
obj通过obj.keys()打印出来的属性顺序是 number–字符串
map的key顺序是声明顺序。
创建方式不同。
obj有三种创建方式 字面量{}、new Object() 、构造函数。
map仅支持new Map()
key的调用不同。
map只能用原生的get方法调用。
设置属性的方式不同
map只能使用set(key,val)方法设置属性。
Size属性
map有size属性,对象没有。Map.size 返回 Map 中元素的数量,而 Object 的键值对个数只能手动计算
Set是唯一值的集合类似与数组,常用于数组去重
Set 对象的几个常用方法和属性
new Set() 创建新的 Set 对象。
add() 向 Set 添加新元素。
clear() 从 Set 中删除所有元素。
delete() 删除由其值指定的元素。
has() 如果值存在则返回 true。
forEach() 为每个元素调用回调。
keys() 返回 Set 对象中值的数组。
size 返回元素个数。
arguments 获取没有形参的函数值,es6中箭头函数不能使用arguments方法
fn1();箭头函数this指向永远指向window
箭头函数的特性
不绑定arguments,用rest参数…解决
本身没有this的概念,捕获其所在上下文的 this 值,作为自己的 this 值,this指向全局
箭头函数不能使用new(会报错)
箭头函数没有原型属性(prototype)
箭头函数不能当做Generator函数,不能使用yield关键字
箭头函数不能换行
箭头函数有constructor、length属性
箭头函数可以立即执行
call,applay bind 的区别
1.applay、call、bind他们三个都能改变函数this的指向问题;
2.applay、call这两个方法的主动调用,bind返回的是改变this指向后的新函数;
3.传参的问题区别,call和bind都是直接传递参数,applay传递的是数组