zoukankan      html  css  js  c++  java
  • ES6__Symbol

     1 /**
     2  * Symbol
     3  */
     4 
     5 /**
     6  * 1 什么是 Symbol ?
     7  *  Symbol,表示独一无二的值。它是 JS 中的第七种数据类型。
     8  */
     9 
    10 // 基本的数据类型: Null Undefined Number Boolean String Symbol
    11 // 引用数据类型:Object
    12 
    13 let s1 = Symbol();
    14 
    15 let s2 = Symbol();
    16 
    17 // console.log(typeof s1); // 'symbol'
    18 // 
    19 // console.log(s1 === s2);
    20  
    21 
    22 // Symbol 函数前不能使用 new 否则会报错,原因在于 Symbol 是一个原始类型的值,不是对象。
    23 
    24 // let s3 = new Symbol();
    25 
    26 // console.log(s1);
    27 // console.log(s2);
    28 
    29 // Symbol 函数接收一个字符串作为参数,表示对Symbol的描述,主要是为了在控制台显示,或者转为字符串的时候,比较容易区分
    30 
    31 // let s3 = Symbol('miaov');
    32 // let s4 = Symbol('leo');
    33 // 
    34 // console.log(s3, s4);
    35 // 
    36 // 
    37 // console.log(Symbol('momo') === Symbol('momo'));
    38 
    39 /**
    40  * 2 Symbol 数据类型的转换
    41  */
    42 
    43 // console.log(String(Symbol('miaov'))); // Symbol(miaov)
    44 // console.log(Symbol('leo').toString()); // Symbol(leo)
    45 // 
    46 // console.log(!!Symbol()); // true
    47 // console.log(Number(Symbol()));
    48 
    49 // console.log(Symbol('momo') + 'pangzi');
    50 // console.log(Symbol('momo') * 100);  不能做任何运算。
    51 
    52 
    53 /**
    54  * 3 作为对象的属性名
    55  */
    56 
    57 // let yyy = Symbol('yyy');
    58 // 
    59 // const obj = {};
    60 // 
    61 // obj[yyy] = 'hello';
    62 // 
    63 // console.log(obj);
    64 // 
    65 // console.log(obj[yyy]);
    66 
    67 // let ss = Symbol('ss');
    68 // 
    69 // const data = {
    70 //   [ss]: 'miaov'
    71 // };
    72 // 
    73 // console.log(data);
    74 // 
    75 // console.log(data[ss]);
    76 
    77 const data = {
    78   [Symbol()]: 123,
    79   a: 1,
    80   b: 2
    81 };
    82 
    83 console.log(data);
    84 console.log(data['Symbol()']);
    85 
    86 // 不能被for...in循环遍,历虽然不能被遍历,但是也不是私有的属性,可以通过Object.getOwnPropertySymbols方法获得一个对象的所有的Symbol属性
    87 
    88 for(let i in data){
    89   console.log(i);
    90 }
    91 
    92 console.log(Object.getOwnPropertySymbols(data)); // [Symbol()]
    93 
    94 console.log(data[Object.getOwnPropertySymbols(data)[0]]);
  • 相关阅读:
    14. Longest Common Prefix[E]最长公共前缀
    13. Roman to Integer[E]罗马数字转整数
    12. Integer to Roman[M]整数转罗马数字
    11. Container With Most Water[M]盛最多水的容器
    10. Regular Expression Matching[H]正则表达式匹配
    清除浮動,父類塌陷解決
    html 定位
    微信支付这个坑,终于过了
    浮动
    盒子模型高级应用
  • 原文地址:https://www.cnblogs.com/xiaozhishang/p/8759643.html
Copyright © 2011-2022 走看看