ES6__Symbol
/**
* 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的更多相关文章
随机推荐
- Docker容器相关技术
docker需要依赖的Linux内核特性:(1)Namespaces 命名空间PID(Process ID) 用来隔离进程NET(Network) 管理网络接口IPC(InterProcess com ...
- Understanding Scroll Views 深入理解 scroll view 读书笔记
Understanding Scroll Views 深入理解 scroll view 读书笔记 It may be hard to believe, but a UIScrollView is ...
- Android手机app耗电量测试工具 - Gsam Battery Monitor
这段时间需要测试一个Android手机app的耗电量,在网上找了一个工具,Gsam Battery Monitor,觉得挺好用,和大家分享一下. 安装app后打开,可以看到主界面是这样的 点击一下上图 ...
- Eclipse被卡死了或者失去响应了后分析根源的一个小技巧
提升程序员工作效率的工具/技巧推荐系列 推荐一个功能强大的文件搜索工具SearchMyFiles 介绍一个好用的免费流程图和UML绘制软件-Diagram Designer 介绍Windows任务管理 ...
- 10g集群启动顺序
1. 首先, /etc/inittab(不同平台文件名可能不同),文件中的下面3行被调用. h1:35:respawn:/etc/init.d/init.evmd run >/dev/null ...
- 微信小程序---代码构成
通过开发者工具快速创建了一个demo项目,观察后可以发现这个项目里边生成了不同类型的文件: .json 后缀的 JSON 配置文件 .wxml 后缀的 WXML 模板文件 .wxss 后缀的 WXSS ...
- QT_8_Qt中的事件处理_定时器事件_定时器类_事件分发器_事件过滤器_绘图事件_高级绘图事件_绘图设备_QFile 文件读写_QFileInfo文件信息
Qt中的事件处理 1.1. 捕获QLabel中是鼠标事件 1.2. enterevent 鼠标进入 1.3. leaveevent 鼠标离开 1.4. 鼠标按下MyLabel::mousePressE ...
- 基于Ubuntu 14.04 LTS编译Android4.4.2源代码
转载自:雨水:http://blog.csdn.net/gobitan/article/details/24367439 基于Ubuntu 14.04 LTS编译Android4.4.2源代码 ...
- PHP23 AJAX分页
模型代码设计 以留言信息管理为例. 获取根据条件查询记录总数和分页数据. <?php namespace application\admin\models; use core\mybase\Mo ...
- C指针类型转换问题
先看下面的代码: #include<stdio.h> int main () { int a; char *x; x = (char *) &a; a = 512; x[0] = ...