Object构造函数创建一个对象包装器
Object.length值为1
Object.assign()用于将所有可枚举属性的值从一个或多个源对象复制到目标对象,并返回目标对象
Object.assign({a: 1, b: 3},{b: 7, c: 4}) // return {a: 1, b: 7, c: 4}
.create()使用指定的原型对象和属性创建一个新对象.defineProperty()给对象添加一个属性并指定该属性的配置.defineProperties()给对象添加多个属性并分别指定它们的属性.entries()返回给定对象自身可枚举属性的[key,value]数组.freeze()冻结对象,其他代码不能删除或更改任何属性.getOwnPropertyDescriptor()返回对象指定的属性配置.getOwnPropertyNames()返回一个数组 它包含了指定对象所有的可枚举或不可枚举的属性名.getOwnPropertySymbols()返回一个数组,它包含了指定对象自身所有的符号属性.getPrototypeOf()返回指定对象的原型对象.is()比较两个值是否相同(所有NaN值都相等).isExtensible()判断对象是否可扩展.isFrozen()判断对象是否已经冻结.isSealed()判断对象是否已经密封.keys()返回一个包含所有给定对象自身可枚举属性名称的数组.seal()防止其他代码删除对象的属性.setPrototypeOf()设置对象的原型.values()返回给定对象自身可枚举值的数组.hasOwnProperty()表示某个对象是否含有指定的属性,而且此属性非原型链继承的,返回布尔值.isPrototypeOf()表示指定的对象是否在本对象的原型链中,返回一个布尔值.propertyIsEnumerable()判断指定属性是否可枚举.toString()返回对象的字符串表示.valueOf()返回指定对象的原始值
Array 对象是用于构造数组的全局对象,数组是类似于列表的高阶对象。可通过索引访问数组元素
.push()添加元素到数组的末尾.pop()删除数组末尾的元素.shift()删除数组最前面的元素.unshift()添加元素到数组的头部.indexOf()返回数组中第一个与指定值相等的元素的索引,找不到返回-1
let pos = ['z','z','j'].indexOf('z') // return 0
['z','z','j'].splice(pos,1) // return ['z','j']
.splice(pos,1)通过索引删除某个元素.splice(pos,n)从一个索引位置删除多个元素.slice()返回一个新的数组对象,由begin和end决定的新数组
['a','b','c'].slice(0,2) // return ['a','b']
['a','b','c'].slice() // return ['a','b','c'] 拷贝
可以给数组的length赋一个更大的值,但是赋一个更小的值则会删掉一份部分元素
.from()从类数组对象或者可迭代对象中创建一个新的数组实例
Array.from([1,2,3], x => x + 3) // return [4,5,6]
.isArray()用来判断传递的值是否是数组对象
Array.isArray([2,4,3]) // true
Array.isArray('jyr') // false
.of()创建一个具有可变参数的新数组实例。区别Array.of()和Array()
Array.of(3) // [3]
Array(3) // [ , , ]
Array.of(2,3,4) // [2,3,4]
Array(2,3,4) // [2,3,4]
Array.prototype.constructor的值就是Array
Array.prototype.length的值是0
.reverse()颠倒数组中元素的排序,第一个变成最后一个,最后一个变为第一个.sort()对数组进行排序
[4,6,3,5,1].sort( (a,b) => a-b ) // return [1,3,4,5,6]
要注意那些方法会改变原数组,那些方法会返回新数组
.join()将一个数组的所有元素连接成一个字符串并返回这个字符串
['j','y','r'].join() // return "j,y,r"
['j','y','r'].join('') // return "jyr"
['j','y','r'].join('#') // return "j#y#r"
迭代方法 在下面的遍历方法中,有很多方法是需要指定一个回调函数作为参数。尽量不要在遍历过程中对数组进行添加,修改,删除操作。
.forEach()为数组中的每个元素执行一次回调函数
forEach循环没办法终止或者跳出循环,可抛出异常
['j','y','r'].forEach( item => item + 'o' ) // return ['jo','yo','ro']
.entries()返回一个数组迭代器对象,该迭代器会包含所有数组元素的键值对.every()判断数组中的每个元素都满足测试函数,返回布尔值.some()判断数组是否至少有一个元素满足测试函数,返回布尔值.filter()将所有在过滤函数中返回true的数组元素放进一个新数组中并返回。较常用
[3,8,9,4,1].filter( item => item >= 5) // return [8,9]
.find()找到第一个满足测试函数的元素并返回那个元素的值,如果没找到,返回undefined.findIndex()找到第一个满足测试函数的元素并返回那个元素的索引,如果找不到,则返回-1.keys()返回一个数组迭代器对象,该迭代器会包含所有数组元素的键。.map()返回一个由回调函数的返回值组成的新数组
[1,2,3].map(item => item * 2) // return [2,4,6]
.reduce()从左到右为每个数组元素执行一次回调函数,并把上次回调函数的返回值放在一个暂存器中传给下次回调函数,返回最后一次回调函数的返回值。比较难理解
[1,3,2,5].reduce( (acc,cur) => acc * cur, 2) // return 2*1*3*2*5=60
.value()返回一个数组迭代器对象,该迭代器会包含所有数组元素的值