数组中常用的方法 Array
Array对象的静态私有属性方法---->Array.xxx()
+ from ES6 把类数组转为数组
+ isArray 检测一个值是否为数组
+ of ES6 创建一个新数组 并且把of中传递的值为数组中的内容
Array构造函数原型上的公共属性方法 --->实例
+ push(从数组末尾添加数据)/pop(从数组末尾删除数据)/sort(排序)/shift(从数组头部添加数据)/unshift(从数组头部删除数据)/splice(增删改一体)
+ slice(截取数组内容)
+ concat(拼接数组)
+ join(将数组转换为字符串)/tostring(将数组转换为字符串)
+ includes(查询数组执行元素) ES6
----------迭代数组
+ foreach 没有返回值,不改变原数组
+ map 支持返回值(回调函数中的返回值会替换当前迭代这一项 原始数组不变 以新数组形式返回)
+ filter 数组筛选 按条件筛选数组 返回新数组 原数组不变
+ find 查找 依次迭代数组中的每一项 找到符合条件的 "这一项" 即使有多项符合条件 找到一项就不找了 一项也没有匹配的
返回undefined
+ findindex ES6 找到符合条件这一项的索引
+ some 迭代数组每一项 只要有一项符合条件就返回true 所有项都不符合 才会返回false
+ every 所有项都符合条件则返回true 只要有一项不符合就返回false
+ reduce 迭代数组每一项 而且可以实现结果的累计 数组求和
+ reduceRight 是从数组最后一项向第一项迭代 和reduce的迭代方向相反
+ fill ES6 将数组所有内容以固定值填充
+ flat ES6 数组扁平化 数组降维 infinity无限
对象中常用的方法 Object
对象类原型上提供的 供其实例调用的方法
可枚举 :能够被for/in循环迭代到(其他循环不算) 或者被Object.keys访问到的属性
+ hasOwnProperty 检测一个值是否为私有属性
+ isPrototypeOf 检测某一个对象是否出现在其原型链上
+ propertyIsEnumerable 检测某个属性是否是"可枚举"的属性
+ toString 检测数据类型的
+ valueOf 获取原始值
Object对象上提供的静态私有属性方法 -> Object.xxx()
+ assion ES6 合并多个对象 浅拷贝
+ create 创建一个空对象,并且把obj作为其原型
+ getPrototypeOf 获取对象的原型链或原型对象
+ setPrototypeOf 设置对象的原型指向 兼容IE11以上
+ is(value1,value2) 比较两个值的大小 基于'==='比较的 特殊:Object.is(NaN,NaN)相等
------------------------------ 获取键值对的
+ keys 获取对象可枚举、非symbol类型的私有属性 返回包含属性名的数组
+ values 返回包含属性值的数组
+ entries 返回包含属性名和属性值的数组
+ getOwnPropertyNames(obj)获取对象"非Symbol类型的私有属性" 无关它的枚举性
+ getOwnPropertySymbols(obj) ES6 获取对象"Symbol类型的私有属性" 无关它的枚举性
==================================== 设置属性规则
+ defineProperty/defineProperties 给当前对象的某个属性或多个属性 设置规则和进行数据劫持
默认情况下:
+ 内置的属性方法(私有的/原型上的)一般都是不可枚举的,自己设定的属性方法一般都是可枚举的
+ 但是我们可以基于Object.defineProperty设置属性的规则
+ getOwnPropertyDescriptor/getOwnPropertyDescriptors 查看对象的某个属性 (或全部属性)的规则
对象的特殊处理
+ freeze 冻结一个对象 把对象中的每个属性的规则设置成 不可删除、不可删除、枚举性不变
+ isfreeze 检测当前对象是否被冻结
+ preventExtensions 让对象变为不可扩展的
+ isExtensible 检测是否为可扩展的
+ seal 密封一个对象 [不可删除、不可新增、不可劫持]
+ 把现有属性设置为不可删除 但是修改/枚举性和之前保持一致
+ 不能扩展新的属性
+ 无法对属性进行劫持
+ isSealed 检测对象是否被冻结
==============
ES6中新增了一个Reflect对象,聚合了关于“操作对象”的相关方法
+ deleteProperty(target, propertyKey) 等同于delete,删除对象的某个属性
+ get(target, propertyKey) 获取对象某个成员的值,等同于target[propertyKey]
+ has(target, propertyKey) 等同于in操作符,校验当前对象中是否存在这个属性
+ set(target, propertyKey, value) 设置当前对象的某个成员的属性值,等同于target[propertyKey]=value
+ ownKeys(target) 获取当前对象所有的私有属性「包含:可枚举和不可枚举的、Symbol和非Symbol类型的」
+ ...
关于JS的兼容处理
+ ES6+(ES2015+) 不兼容IE浏览器 支持EDGE 谷歌 火狐等浏览器
+ ES5 不兼容IE6~8
我们所谓的兼容处理 其实就是把ES6+转化为ES5 https://babeljs.io
+ ES6语法的转换 babel-loader babel-preset-env 对于一些特殊的ES6语法