/**
* 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. Spring源码:Spring IoC容器加载过程(1)

    Spring源码版本:4.3.23.RELEASE 一.加载过程概览 Spring容器加载过程可以在org.springframework.context.support.AbstractApplic ...

  2. ES6学习笔记(12)----Reflect

    参考书<ECMAScript 6入门>http://es6.ruanyifeng.com/ Reflect 1.概述:Object对象的内部方法都能在Reflect中找到,同时Reflec ...

  3. 使用cordova把h5应用打包成apk

    由于h5应用开发不是本例重点,因此直接提供一个最简单的h5应用代码,此应用使用vue-cli框架开发 此h5应用叫vue1,用webstrom打开vue1,进行npm install安装引用 vue1 ...

  4. 第8章 应用协议 图解TCP/IP 详解

    第8章 应用协议 图解TCP/IP 详解 8.1 应用层协议概要 应用层协议的定义 TCP和IP等下层协议是不依赖上层应用类型.实用性非常广的协议.而应用协议则是为了实现某种应用而设计和创造的协议. ...

  5. MyBatis学习(三)

    前言 感觉学习进度还是比较慢啊,一整天的学习效率不是很高,一会看电视,一会喝茶,对自己的要求不严格...今天就说说关联表数据的插入以及别名的使用. 正文 1.关联插入 之前,我在数据库中已经创建了一张 ...

  6. [转载]ant和maven的区别

    Ant是软件构建工具,Maven的定位是软件项目管理和理解工具.Maven除了具备Ant的功能外,还增加了以下主要的功能: 1)使用Project Object Model来对软件项目管理: 2)内置 ...

  7. XtraBackUp 热备份工具

    是一款强大的在线热备份工具 备份的过程中,不锁表 使用percona-xtrabackup-24-2.4.7-1.el7.x86_64.rpm yum源安装: 1.安装Percona的库:       ...

  8. Image Is Everything LA2995

    白书第一章例题6 构造.思维.几何. 分别从几个角度去看,有矛盾就删掉,最后遍历一下统计个数 方法证明:第一个方块肯定要删除.假设前k个必须删除,第k+1个矛盾出现,假如不删掉,矛盾将持续存在,故必须 ...

  9. python django项目断点调试

  10. QT+ 状态栏+核心控件+浮动窗口

    #include "mainwindow.h" #include <QStatusBar> #include <QLabel> #include<QT ...