基本数据类型--Symbol学习笔记

 //Symbol 值通过`Symbol`函数生成
    let s=Symbol();
    console.log(typeof s); //symbol
//=============传字符串==============
    //`Symbol`函数可以接受一个字符串作为参数,
    //有了参数以后,就等于为它们加上了描述
    let s1=Symbol('foo');
    let s2=Symbol('bar');
    console.log(s1);  //Symbol(foo)
    console.log(s2);    //Symbol(bar)

    //转为字符串时,比较容易区分
    console.log(s1.toString()); //'Symbol(foo)'
    console.log(s2.toString()); //'Symbol(bar)'
//=============传对象==============
    //如果 Symbol 的参数是一个对象
    //就会调用该对象的`toString`方法,将其转为字符串,然后才生成一个 Symbol 值。
    const obj={
        toString(){
            return '自动调用toString方法';
        }
    }
    const sym=Symbol(obj);
    console.log(sym); //Symbol(自动调用toString方法)
//==========Symbol值不相等============
    //相同参数的`Symbol`函数的返回值是不相等的

    //无参数,不相等
    let s3=Symbol();
    let s4=Symbol();
    console.log(s3==s4);  //false
    console.log(s3===s4); //false
    console.log(s3!=s4);  //true
    console.log(s3!==s4); //true

    //有参数,也不相等
    let s5=Symbol('foo');
    let s6=Symbol('foo');
    console.log(s5===s6); //false
    let s7=Symbol('不能和其他类型运算,比如字符串拼接');
    //console.log('test'+s7);//Uncaught TypeError: Cannot convert a Symbol value to a string
    //console.log(`${s7}`);//Uncaught TypeError: Cannot convert a Symbol value to a string

    let s8=Symbol('可以显式转为字符串');
    console.log(String(s8));        //'Symbol(可以显式转为字符串)'
    console.log(s8.toString()); //'Symbol(可以显式转为字符串)'
  let s9=Symbol();
  console.log(Boolean(s9)); //true
  console.log(!!s9)                 //true
  console.log(!s9);                 //false

  if(s9){
    console.log('Symbol默认布尔值为true');
  }
  // console.log(Number(s9));
  // console.log(s9+2)
//作为属性名的Symbol
    let mySymbol=Symbol();

    //写法一
    let a={};
    a[mySymbol]='hello';

    //写法二
    let a={
      [mySymbol]:'hello'
    }

    //写法三
    let a={};
    Object.defineProperty(a,mySymbol,{
      value:'hello'
    });
    console.log(a[mySymbol])  //hello
//点运算符后面总是字符串,
//所以不会读取`mySymbol`作为标识名所指代的那个值
//导致`a`的属性名实际上是一个字符串,而不是一个 Symbol 值

    let _mySymbol=Symbol();
    let b={};
    b._mySymbol='Hello';
    console.log(b._mySymbol);     // string | 'Hello'
    console.log(b[_mySymbol]);    //undefined|undefined
    console.log(b['_mySymbol']);  // string | 'Hello'
//在对象的内部,使用 Symbol 值定义属性时,Symbol 值必须放在方括号之中
  let s = Symbol();

  //写法一
  /*let obj = {
    [s]: function (arg) { console.log('当前参数是:'+arg) }
  };*/

  //写法二
  let obj = {
    [s] (arg) { console.log('当前参数是:'+arg) }
  };
  
  console.log(obj[s](123))
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,294评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,780评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,001评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,593评论 1 289
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,687评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,679评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,667评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,426评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,872评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,180评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,346评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,019评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,658评论 3 323
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,268评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,495评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,275评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,207评论 2 352

推荐阅读更多精彩内容