赞
踩
ES6 引入 rest 参数,用于获取函数的实参,用来代替 arguments
// ES6 引入rest参数,用于获取函数的实参,用来代替arguments // ES5获取实参的方式 function date () { console.log(arguments); } date('a','b','c'); //Array(3)0: "a"1: "b"2: "c"length: 3__proto__: Array(0) //rest 参数 function date (...args) { console.log(args); } date (1,2,3); //[1, 2, 3] // rest 参数必须要放到最后 function fn (a, b, ...args) { console.log(a); console.log(b); console.log(args); }; fn(1,2,3,4,5,6); // 1 2 Array(4) 3 4 5 6
rest非常适合不定个数参数函数场景。
扩展运算符(spread)也是三个点(…)。它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列,对数组进行解包。
// … 扩展运算符能将数组转换为逗号分隔的 参数序列
// 声明一个数组
const hi = [‘海军’,‘空军’,‘陆军’];
//声明一个函数
function budui() {
console.log(arguments);
}
budui(...hi);
ES6 引入了一种新的原始数据类型 Symbol,表示独一无二的值。它是
JavaScript 语言的第七种数据类型,是一种类似于字符串的数据类型。
Symbol 特点
1) Symbol 的值是唯一的,用来解决命名冲突的问题
2) Symbol 值不能与其他数据进行运算
3) Symbol 定义的对象属性不能使用for…in 循环遍历,但是可以使用Reflect.ownKeys 来获取对象的所有键名
注: 遇到唯一性的场景时要记得使用Symbol
ES6提供了11个内置的Symbol的值。会在特定的场景下自动执行。
Symbol.hasInstance:当其他对象使用 instanceof 运算符,判断是否为该对
象的实例时,会调用这个方法
Symbol.isConcatSpreadable: 对象的 Symbol.isConcatSpreadable 属性等于的是个布尔值,表示该对象用于Array.prototype.concat()时是否可以展开。
Symbol.species:创建衍生对象时,会使用该属性
Symbol.match:当执行 str.match(myObject) 时,如果该属性存在,会调用它,返回该方法的返回值。
Symbol.replace:当该对象被 str.replace(myObject)方法调用时,会返回该方法的返回值。
Symbol.search: 当该对象被 str.search (myObject)方法调用时,会返回该方法的返回值。
Symbol.split: 当该对象被 str.split(myObject)方法调用时,会返回该方法的返回值。
Symbol.iterator: 对象进行 for…of 循环时,会调用 Symbol.iterator 方法,返回该对象的默认遍历器
Symbol.toPrimitive: 该对象被转为原始类型的值时,会调用这个方法,返回该对象对应的原始类型值。
Symbol. toStringTag: 在该对象上面调用 toString 方法时,返回该方法的返回值。
Symbol. unscopables:该对象指定了使用 with 关键字时,哪些属性会被 with环境排除
遍历器(Iterator)就是一种机制。它是一种接口,为各种不同的数据结构提供统一的访问机制。任何数据结构只要部署 Iterator 接口,就可以完成遍历操作。
特点:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。