12.Symbol的介绍与创建
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<script>
// ES6引入一种新的原始数据类型Symbol,表示独一无二的值,他是JavaScript语言的第七种数据类型,是一种类似于字符串的数据类型
// Symbol的特点:
/** 1.Symbol的值是唯一的,可以用来解决命名冲突的问题
* 2.Symbol值不能与其他的数据进行运算,如加减乘除
* 3.Symbol定义的对象属性不能使用for...in循环遍历,但是可以使用Reflect.ownKeys来获取对象的所有键名
*/
// 创建Symbol
let s = Symbol();
// console.log(s, typeof s);
let s2 = Symbol("张三"); //里面的字符串相当于描述字符串,相当于注释
let s3 = Symbol("张三");
console.log(s2, s2 === s3);
// Symbol.for方法创建
let s5 = Symbol.for("张三"); //创建函数对象
let s6 = Symbol.for("张三"); //读取函数对象,Symbol.for创建的值可以通过Symbol.for读取---通过描述对象(字符串)来读唯一的Symbol值
console.log(s5, typeof s5, s5 === s6);
// 不能与其他数据进行数据运算,但是可以比较
// let result = s + 100; ---报错: Cannot convert a Symbol value to a number
// let result2 = s > 100; ---报错: Cannot convert a Symbol value to a number
// let result3 = s != 100; true
// let result5 = s === 100; false
// let result6 = s === s; true
// console.log(result3);
// 七种原始数据类型:
/**
* 基本类型:String,Number,Boolean,undefined,Null
* 引用类型:Object
* 唯一类型:Symbol
*/
</script>
</body>
</html>