/**
* 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. Vue 2.0入门基础知识之全局API

    3.全局API 3-1. Vue.directive 自定义指令 Vue.directive用于自定义全局的指令 实例如下: <body> <div id="app&quo ...

  2. git diff查看修改,出现^M换行问题

    通过命令git diff查看修改,出现^M换行问题,如图: 解决: git config --global core.whitespace cr-at-eol 换行符的问题: 提交时转换为LF,检出时 ...

  3. laravel的scout包安装及laravel-es包安装

    安装laravel/scout 作用:搜索驱动,可随时更换驱动,上层业务逻辑可不用改变 官网文档:https://laravel-china.org/docs/laravel/5.4/scout/12 ...

  4. K-means算法Java实现

    public class KMeansCluster {          private int k;//簇的个数          private int num = 100000;//迭代次数  ...

  5. easybcd 支持 windows 10 和 ubuntu 14.04 双系统启动

    家里计算机系统 windows 10 全新安装. 原本是双系统的,还有一个ubuntu. windows 10 安装以后,恢复ubuntu就是问题了. (事后经验:请不要立刻安装bcd修改工具) 最初 ...

  6. MongoDB最简单的入门教程之二 使用nodejs访问MongoDB

    在前一篇教程 MongoDB最简单的入门教程之一 环境搭建 里,我们已经完成了MongoDB的环境搭建. 在localhost:27017的服务器上,在数据库admin下面创建了一个名为person的 ...

  7. iOS 如何使用TabbarController

    xcode中给我内置很多app模版,不过很多时候我们需要更加灵活的初始化项目.下面我就简单介绍一下,如何从0开始制作一个tabbar app. 创建个项目,由于我们从头开始写程序,因此理论上对模版没有 ...

  8. 光线步进——RayMarching入门

    入门实现 先用RayMarching描绘一个球体,最后在进行光照计算参考:https://www.shadertoy.com/view/llt3R4 模拟摄像机射线float3 rayDirectio ...

  9. flask_SQLAlchemy 中常用的过滤和执行器

    常用的SQLAlchemy查询过滤器 过滤器 说明 filter() 把过滤器添加到原查询上,返回一个新查询 filter_by() 把等值过滤器添加到原查询上,返回一个新查询 limit 使用指定的 ...

  10. SQL分组聚合查询练习(SQL Server和Oracle相似)20190514

    先建表 CREATE TABLE [dbo].[orderdt_jimmy]( ,) NOT NULL, [order_nid] [int] NOT NULL, ) NOT NULL, [qty] [ ...