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>
posted @ 2022-01-02 16:07  问某完红  阅读(71)  评论(0编辑  收藏  举报