ES6-Symbol的内置属性
1. 以下 11 个方法就是他的内置属性。用来改变对象在特定场景下的表现,就是拓展对象功能。
含义:除了定义自己使用的 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环境排除
1.返回的 true false 自己控制。
2.合并数组时,用true 和false 控制最后的数组是否能展开。false 最后的数组展不开。