ES6(对象,数组,类型化数组)

对象

1,Object.is

用于判断两个值是否相等, 其内部实现类SameValue算法, 其行为类似于“=
但与“
=”不同的是 它认为两个NaN是相等的 而+0,-0是不相等的

2,Object.assign

表示此方法可以将对象合并成一个 他的第一个参数是目标对象 剩余的参数都是源对象 返回值是最后的目标对象
特点:
只能复制可枚举的自有属性 不能无法复制继承的属性 和 不可枚举的属性

 var obj1 = { name: '123' }
 var obj2 = Object.create( obj1 )
 
 obj2.age = 2
 Object.assign({}, obj2)
// 其结果为{ age: 2}

遇到同名的属性, 后面的会覆盖前面的值
Object.assign() 方法是进行的浅拷贝 对于属性值为对象 只能对其指针的地址进行复制
Symbol()对象也会复制
当源对象的位置 是基本数据类型的时候 会将其包装成对象 像是undefined与null没有相应对象 就会被包装成字符串类型。

数组

1,静态方法 Array.of()

一个静态方法of(), 用于创建数组,可以接收任意个参数,返回值是由这些参数组成的一个新数组。

Array.of(2) // [2]
Array(2) //[,]

2,静态方法 Array.from()

可以将类数组对象和可迭代对象转换成数组, 可以接收3 个参数
第一个参数:待转换对象
第二个参数:回调函数 可选
第三个参数: 执行回调函数所绑定的this对象 可选

var obj = { 0: 1, 1: 2, 2: 3,length: 3} // 类数组对象
Array.from(obj) // [1,2,3] 

// 使用回调函数
Array.from(obj, function(value, index){
	return value * 2
})

3, fill(), copywithin()

fill(填充的值,开始的索引值,结束填充的位置)
copyWithin( 开始执行复制的位置,复制序列的起始位置,复制序列的结束位置)

注意点:

  • 不仅修改原数组, 还会覆盖指定 范围内的元素
  • 复制或者填充执行的都是浅复制
  • 当方法中的索引参数是负数的时候 会先和数组的长度相加,再计算出最终的索引。
  • 保持数组的长度不变 在数组末尾停止复制或者填充
var arr1 = [1,2,3,4,5]
var arr2 = [ 1, 2, 3, 4, 5]
arr1.fill(6, 0, 2) // [6, 6, 3, 4, 5]
arr2.copyWithin(2,0,2) // [1,2,1,2,5]

4, find() , findIndex()

这两个方法都可以接收两个参数
第一个是回调函数,其中有三个参数:当前元素,元素索引,原始数组
第二个是回调函数绑定的this对象

当匹配失败时, find() 返回的undefined
findIndex()返回的是-1

arr.find(function(value, index){
 return value ==="1"
})

5, keys(), values(), entries()

这三个是迭代器方法 都返回一个可迭代对象

var arr = ["a","b","c"]
[...arr.keys()] // [0,1,2]
[...arr.values()] // ["a","b","c"]
[...arr.enties()] // [[0,"a"],[1,"b"],[2,"c"]]

你可能感兴趣的:(Es6,es6,javascript,开发语言)