2021-05-12
Posted 前端世界升级打怪
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2021-05-12相关的知识,希望对你有一定的参考价值。
ES6新特性分享(四)
spread 扩展运算符
扩展运算符(spread)也是三个点(...)。它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列,对数组进行解包。
/**
* 展开数组
*/
let habits = ['篮球','羽毛球','乒乓球'];
function fn(){
console.log(arguments);
}
fn(...habits)
Symbol
Symbol 基本使用
ES6 引入了一种新的原始数据类型 Symbol,表示独一无二的值。它是
javascript 语言的第七种数据类型,是一种类似于字符串的数据类型。
Symbol 特点
1) Symbol 的值是唯一的,用来解决命名冲突的问题
2) Symbol 值不能与其他数据进行运算
3) Symbol 定义 的 对象属 性 不能 使 用 for…in 循 环遍 历 ,但 是可 以 使 用
Reflect.ownKeys 来获取对象的所有键名
//创建 Symbol
let s1 = Symbol();
console.log(s1, typeof s1);
//添加标识的 Symbol
let s2 = Symbol('奇奇');
let s2_2 = Symbol('奇奇');
console.log(s2 === s2_2);
//使用 Symbol for 定义
let s3 = Symbol.for('奇奇');
let s3_2 = Symbol.for('奇奇');
console.log(s3 === s3_2);
Symbol 内置值
除了定义自己使用的 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 环境排除。
|
结尾
第四弹~~~
以上是关于2021-05-12的主要内容,如果未能解决你的问题,请参考以下文章