ES6中对象(Object),数组(Array),Set集合,Map集合API扩展。

对象(Object)API: 

Object.is(a,b)     判断a,b两个值是否一样,类似于但不等于===

console.log(+0 === -0);//true
console.log(Object.is(+0, -0));//false
console.log(NaN === NaN);//false
console.log(Object.is(NaN, NaN));//true

Object.assign() 深复制或者合并对象
        Object.assign(obj1, obj2) 深复制,将obj2复制给obj1

let obj1 = {}
let obj2 = { name: '张三', age: 12 }
Object.assign(obj1, obj2)//复制obj2到obj1
console.log(obj1, obj2);
console.log(obj1 === obj2);//检查是否深复制


        Object.assign(obj1, obj2, obj3) 对象合并,将obj2、obj3合并后复制给obj1

let obj1 = {}
let obj2 = { name: '张三', age: 12 }
let obj3 = { name: '李四', gender: 'male' }
Object.assign(obj1, obj2, obj3)
console.log(obj1);


Object.setPrototypeOf(obj1, obj2)  为目标对象设置原型,将obj2设置成obj1的原型
Object.getPrototypeOf(obj1)  获取目标对象的原型

let obj1 = {}
let obj2 = { name: '张三', age: 12 }
Object.setPrototypeOf(obj1, obj2);//将obj2设置成obj1的原型
console.log(obj1.__proto__);//obj1的原型
console.log(obj1.constructor.prototype);obj1的构造函数所指的原型

console.log(Object.getPrototypeOf(obj1));

Object.keys()     返回对象属性名组成的数组

let obj = {
  name: 'zhangsan',
  age: 12,
  gender: 'male'
}
let keys = Object.keys(obj)
console.log(keys);


Object.values()   返回对象属性值组成的数组

let obj = {
  name: 'zhangsan',
  age: 12,
  gender: 'male'
}
let values = Object.values(obj)
console.log(values);


Object.entries()  返回对象[属性名, 属性值]组成的二维数组

let obj = {
  name: 'zhangsan',
  age: 12,
  gender: 'male'
}
let entries = Object.entries(obj)
console.log(entries);

 数组(Array)API:

Array.from()  将其他类型数据(可迭代的)转成数组

let arrObj = {
  0: 'tom',
  1: 'terry',
  2: 'jacky',
  length: 3
}

let arr = Array.from(arrObj)
let arr2 = Array.from('hello')
console.log(arr,arr2);


Array.of()    创建数组实例,实参就是数组的元素

let arr1 = new Array(1, 2, 3, 4, 5, 6) 
let arr2 = new Array(3)  // [empty,empty,empty]
console.log(arr1, arr2);
let arr3 = Array.of(3, true, 'str') // [3]
console.log(arr3);


Array.prototype.find() 返回满足条件的第一个元素,参数为函数

let arr1 = new Array(1, 2, 3, 4, 5, 6)
let result = arr1.find((item, index) => {
  return item > 3
})
console.log(result);   // 4


Array.prototype.findIndex() 返回满足条件的第一个元素的索引,参数为函数

let arr1 = new Array(1, 2, 3, 4, 5, 6)
let result = arr1.findIndex((item, index) => {
  return item > 3
})
console.log(result);  //3


Array.prototype.includes()  判断当前数组中是否包含某个元素,参数为元素,返回true/false

let arr1 = new Array(1, 2, 3, 4, 5, 6)  // [1,2,3]
let result1 = arr1.includes(1)
console.log(result1);   // true


Array.prototype.fill()      填充数组(所有元素填充),修改数组原值

let arr1 = new Array(1, 2, 3, 4, 5, 6)  // [1,2,3]
let result2 = arr1.fill(7)
console.log(result2, arr1, result2 === arr1);


Array.prototype.()      索引的迭代器对象
Array.prototype.values()    元素的迭代器对象
Array.prototype.entries()   键值对的迭代器对象

let arr1 = ['tom', 'lerry', 'jacky']
let keys = arr1.keys()
let values = arr1.values()
let entries = arr1.entries()
console.log(keys, values, entries);
console.log(Array.from(keys));
console.log(Array.from(values));
console.log(Array.from(entries));

 

 Set集合API:

Set.prototype.size        返回Set实例的成员总数。

let arr = [1, 2, 3, 4, 1, 4, 5, 6, 7, 8, 5, 6, 8]
let set = new Set(arr)
console.log(set);
console.log(set.size);


Set.prototype.add(value)    添加某个值,返回Set结构本身

let arr = [1, 2, 3, 4, 1, 4, 5, 6, 7, 8, 5, 6, 8]
let set = new Set(arr)
console.log(set.add(100));


Set.prototype.delete(value)    删除某个值,返回一个布尔值,表示删除是否成功。

et arr = [1, 2, 3, 4, 1, 4, 5, 6, 7, 8, 5, 6, 8]
console.log(set);
let set = new Set(arr)
console.log(set.delete(1));
console.log(set);


Set.prototype.has(value)    返回一个布尔值,表示该值是否为Set的成员。

let arr = [1, 2, 3, 4, 1, 4, 5, 6, 7, 8, 5, 6, 8]
let set = new Set(arr)
console.log(set);
console.log(set.has(100));


Set.prototype.clear()    清除所有成员,没有返回值。

let arr = [1, 2, 3, 4, 1, 4, 5, 6, 7, 8, 5, 6, 8]
let set = new Set(arr)
console.log(set);
set.clear()
console.log(set);


Set.prototype.keys()    返回键名的遍历器
Set.prototype.values()    返回键值的遍历器
Set.prototype.entries()    返回键值对的遍历器

let arr = [1, 2, 3, 4, 1, 4, 5, 6, 7, 8, 5, 6, 8]
let set = new Set(arr);
console.log(set.keys());
console.log(set.values());
console.log(set.entries());


Set.prototype.forEach()    使用回调函数遍历每个成员

let arr = [1, 2, 3, 4, 1, 4, 5, 6, 7, 8, 5, 6, 8]
let set = new Set(arr)
set.forEach(item => {
  console.log(item);
})

 

 Map集合API:

Map.prototype.size    返回 Map 结构的成员总数。

let obj = {
  name: 'zhangsan',
  age: 12,
  gender: '男'
}
let entries = Object.entries(obj)
console.log(entries);//[ [ 'name', 'zhangsan' ], [ 'age', 12 ], [ 'gender', '男' ] ]
let map = new Map(entries);
console.log(map);//Map(3) { 'name' => 'zhangsan', 'age' => 12, 'gender' => '男' }
console.log(map.size);//3


Map.prototype.set(key, value)    set方法设置键名key对应的键值为value,然后返回整个map结构。如果key已经有值,则键值会被更新,否则就新生成该键。

let obj = {
  name: 'zhangsan',
  age: 12,
  gender: '男'
}
let entries = Object.entries(obj)
let map = new Map(entries);
map.set(true, false)//添加
map.set('age',13)修改
console.log(map);


Map.prototype.get(key)    get方法读取key对应的键值,如果找不到key,返回undefined。

let obj = {
  name: 'zhangsan',
  age: 12,
  gender: '男'
}
let entries = Object.entries(obj)
let map = new Map(entries);
console.log(map.get('gender')); //男
console.log(map.get('father')); //undefined


Map.prototype.has(key)    has方法返回一个布尔值,表示某个键是否在当前 Map 对象之中。

let obj = {
  name: 'zhangsan',
  age: 12,
  gender: '男'
}
let entries = Object.entries(obj)
let map = new Map(entries);
console.log(map.has('age')); //true
console.log(map.has(true));   //false


Map.prototype.delete(key)   delete方法删除某个键,返回true。如果删除失败,返回false。

let obj = {
  name: 'zhangsan',
  age: 12,
  gender: '男'
}
let entries = Object.entries(obj)
let map = new Map(entries);
console.log(map);
console.log(map.delete('age'));  //true
console.log(map.delete('father'));  //false
console.log(map);


Map.prototype.clear()    清除所有成员,没有返回值

let obj = {
  name: 'zhangsan',
  age: 12,
  gender: '男'
}
let entries = Object.entries(obj)
let map = new Map(entries);
console.log(map);
map.clear()
console.log(map);


Map.prototype.keys()    返回键名的遍历器
Map.prototype.values()    返回键值的遍历器
Map.prototype.entries()    返回键值对的遍历器

let obj = {
  name: 'zhangsan',
  age: 12,
  gender: '男'
}
let entries = Object.entries(obj)
let map = new Map(entries);
let keys = map.keys()
let values = map.values()
let entries1 = map.entries()
console.log(keys);
console.log(values);
console.log(entries1);


Map.prototype.forEach()    使用回调函数遍历每个成员

 

let obj = {
  name: 'zhangsan',
  age: 12,
  gender: '男'
}
let entries = Object.entries(obj)
let map = new Map(entries);

map.forEach((value, key) => {
  console.log(value, key);
})

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值