/**
* Symbol
*/ /**
* 1 什么是 Symbol ?
* Symbol,表示独一无二的值。它是 JS 中的第七种数据类型。
*/ // 基本的数据类型: Null Undefined Number Boolean String Symbol
// 引用数据类型:Object let s1 = Symbol(); let s2 = Symbol(); // console.log(typeof s1); // 'symbol'
//
// console.log(s1 === s2); // Symbol 函数前不能使用 new 否则会报错,原因在于 Symbol 是一个原始类型的值,不是对象。 // let s3 = new Symbol(); // console.log(s1);
// console.log(s2); // Symbol 函数接收一个字符串作为参数,表示对Symbol的描述,主要是为了在控制台显示,或者转为字符串的时候,比较容易区分 // let s3 = Symbol('miaov');
// let s4 = Symbol('leo');
//
// console.log(s3, s4);
//
//
// console.log(Symbol('momo') === Symbol('momo')); /**
* 2 Symbol 数据类型的转换
*/ // console.log(String(Symbol('miaov'))); // Symbol(miaov)
// console.log(Symbol('leo').toString()); // Symbol(leo)
//
// console.log(!!Symbol()); // true
// console.log(Number(Symbol())); // console.log(Symbol('momo') + 'pangzi');
// console.log(Symbol('momo') * 100); 不能做任何运算。 /**
* 3 作为对象的属性名
*/ // let yyy = Symbol('yyy');
//
// const obj = {};
//
// obj[yyy] = 'hello';
//
// console.log(obj);
//
// console.log(obj[yyy]); // let ss = Symbol('ss');
//
// const data = {
// [ss]: 'miaov'
// };
//
// console.log(data);
//
// console.log(data[ss]); const data = {
[Symbol()]: 123,
a: 1,
b: 2
}; console.log(data);
console.log(data['Symbol()']); // 不能被for...in循环遍,历虽然不能被遍历,但是也不是私有的属性,可以通过Object.getOwnPropertySymbols方法获得一个对象的所有的Symbol属性 for(let i in data){
console.log(i);
} console.log(Object.getOwnPropertySymbols(data)); // [Symbol()] console.log(data[Object.getOwnPropertySymbols(data)[0]]);

ES6__Symbol的更多相关文章

随机推荐

  1. 简要记录下localStorage在项目中的应用之一

    localStorage作为HTML5本地存储web storage特性的API之一,主要作用是将数据保存在客户端中.localStorage保存的数据,一般情况下是永久保存的,也就是说只要采用loc ...

  2. js中不容小觑的var声明

    在学习vue相关课程中,有一次跟着老师敲代码,写出了如下代码: var Child = { template:`<div @click='handleClick'><slot> ...

  3. mysql5.7.25集群部署和方案设计(附PXC一键部署脚本)

    还记得我们之前部署mysql集群有多麻烦嘛?波哥来救你们啦!~ 我已将项目上传到了我的github仓库中,大家可以点击仓库地址出现的连接登录查看相应的代码!如果觉得不错别忘了转发.点赞哦! 部署步骤: ...

  4. filter和map的使用

    if ( this.dataAggridvue.filter( item => item.Accepted == true && item.InvoiceGroupCode != ...

  5. iframe 完全跨域自适应高度

    1.跨域访问页面, 需要访问后台的页面,通过后台调转 2.跨域自适应宽高   思路:通过相互嵌套,获取跨域页面的高度,通过src传回到本域,通过parent方法设置主页的iframe的高度 index ...

  6. iOS 根据屏幕宽度, 高度判断手机设备

    #define iPhone_5 [UIScreen mainScreen].bounds.size.width == 320.0 #define iPhone_6 [UIScreen mainScr ...

  7. iOS 利用UIWebView与JavaScript交互的最简单办法

    这里说的是针对iOS的!并且方法很简单!!并且验证可行的!!! 1, UIWebView调用 JavaScript 的函数: NSString* strValue = [webView stringB ...

  8. FPGA编程技巧系列之按键边沿检测

    抖动的产生: 通常的按键所用开关为机械弹性开关,当机械触点断开.闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开.因而在闭合及断开的瞬间均伴随有一连串的 ...

  9. 洛谷 P1413 坚果保龄球

    题目描述 PVZ这款游戏中,有一种坚果保龄球.zombie从地图右侧不断出现,向左走,玩家需要从左侧滚动坚果来碾死他们. 我们可以认为地图是一个行数为6,列数为60的棋盘.zombie出现的那一秒站在 ...

  10. html文本溢出显示省略字符的两种常用方法

    方法一:使用CSS溢出省略的方式解决 解决效果如下: css代码: display: -webkit-box; display: -moz-box; white-space: pre-wrap; wo ...