ES6基础 02
1. ES6-Number
1.1 Number函数
- Number.isNaN函数
Number.isNaN('abc');
返回false;判断是否是NaN,除了NaN以外,都为false;没有隐式类型转换
- Number.isFinite函数
Number.isFinite(Infinity);
返回flase;判断数值是否是有限,只有Infinity是无限的,其他数值因为17位精确度问题都有限
- Number.parseInt函数
Number.parseInt("124.sd");
返回123; 解析字符串返回一个整数
- Number.isInteger
Number.isInteger(3.00);
但会true;判断是否是整数
1.2 Math函数
Math.trunc(3.4);
返回3;返回传入数值的整数,相当于向下取整
Math.sign(3);
返回1;判断数值正负;正数返回1、复数返回-1、0返回0
2. ES6-Object
2.1 新写法
ES6允许在对象字面量中直接写入变量和函数,作为对象的属性和方法。此时,属性名就是变量名,属性的值就是变量的值。
let name = 'zs'; |
2.2 Object函数
Object.is(num1, num2);
返回false;判断两个值是否严格相等
Object.assign(target,origin);
把源对象的属性复制到目标对象上;返回目标对象
let target = { a: 1, b: 2 }; |
Object.getPrototypeOf(person);
用于获取指定对象的原型
Object.setPrototypeOf()
用于设置一个指定的对象的原型
let dict = Object.setPrototypeOf({}, null);//指定空对象的原型为空 |
Object.entries();
遍历对象,返回可枚举属性(除Symbol外)的键值对数组
Object.keys()
遍历对象,返回一个给定对象的所有可枚举属性的字符串数组
Object.values()
遍历对象,返回一个包含对象自身的所有可枚举属性值的数组
let person2 = { |
3. ES6-function
3.1 rest参数(剩余参数)
如果函数的最后一个命名参数以...
为前缀,则它将成为一个由剩余参数组成的真数组
function fun(a, b, ...theArgs) { |
3.2 扩展运算符
用于将一个数组转成一个对应的参数数列
function sum(x, y, z) { |
3.3 箭头函数
基础语法
(参数列表) => {返回值}
高级用法:支持剩余参数和默认参数、支持参数列表结构
let fun = (param1, param2) => { return expression; } |
4. symbol
symbol 是一种基本数据类型 。Symbol()
函数会返回symbol类型的值,该类型具有静态属性和静态方法。它的静态属性会暴露几个内建的成员对象;它的静态方法会暴露全局的symbol注册
每个从Symbol()
返回的symbol值都是唯一的。一个symbol值能作为对象属性的标识符;这是该数据类型仅有的目的。
基础语法:let sym1 = Symbol('foo');
symbol作为属性名不会被遍历到
4.1 Symbol函数
- Object.getOwnPropertySymbols函数
用于获取对象的symbol属性
let name = Symbol('name'); |
- Reflect.ownKeys函数
用于获取对象包含symbol属性的所有属性
Reflect.ownKeys(person);// ["age", Symbol(name)] |
- Symbol.for(key)函数
使用给定的key搜索现有的symbol,如果找到则返回该symbol。否则将使用给定的key在全局symbol注册表中创建一个新的symbol
key:一个字符串,作为 symbol 注册表中与某 symbol 关联的键(同时也会作为该 symbol 的描述)
- Symbol.keyFor(sym)
用来获取全局symbol 注册表中与某个 symbol 关联的键
5. Proxy
Proxy 对象用于创建一个对象的代理,从而实现基本操作的拦截和自定义(如属性查找、赋值、枚举、函数调用等)
实现
let p = new Proxy(target, handler) |
target:要使用 Proxy
包装的目标对象(可以是任何类型的对象,包括原生数组,函数,甚至另一个代理)。
handler:一个通常以函数作为属性的对象,各属性中的函数分别定义了在执行各种操作时代理 p
的行为。
- get、set、ownKeys、has方法
let person = { 'name': 'zs', 'age': 15 } |
- apply方法
function sum(a, b) { |
- Proxy.revocable方法
Proxy.revocable()
方法用来创建一个可撤销的代理对象
let person3 = { 'name': 'zs' } |
6. for…of
for...of
语句在可迭代对象(包括Array,Map,Set,String,arguments 等等)上创建一个迭代循环,调用自定义迭代钩子,并为每个不同属性的值执行语句;不能迭代Object对象
let iterable = [10, 20, 30]; |
6.1 for总结
forEach可以取得对象的内容,不能操作遍历的进程
for in常用于对象的遍历,对遍历数字数组取到的时字符串类型
for of写法简洁,除了对象都可以遍历,很先进