ES6深入浅出-10 ES6新增的数据类型-1.Symbol与隐藏属性






ES5现有的数据类型。7种数据类型。

新的类型是属于Object
最普通的类型。plain object
数组array
函数function
下面这些都属于Object类型。



今天要讲的
set类型表示集合
Map就是一个映射关系
TypedArray有类型的数组。

今天讲的内容都是不常用的内容。大体了解一下就可以了。平时写代码很少用到这几种类型。




不能用new Symbol()。要不会报错。

每个值都是不相等的,




obj的属性名不管怎么写都是字符串。除了字符串,还可以是symbol

它是一个基本的数据类型,就是它不是一个复杂的数据类型。


上面是基本数据类型,只有Object是复杂数据类型。

Symbol是一种基本的数据类型,归类就放在上面。

声明a为Symbol()类型,用typeof a 看下a的数据类型 就是symbol类型的


声明数字n。那么n的typeof就是 number类型的

可留空


Symbol的值是唯一的。a和b还是不相等的

a等于Symbol('xxxx'),b也等于Symbol('xxxx') 。a和b都是基本数据类型,为什么a和b不相等呢???理论上来说应该基本相等。
symbol的目的是作为属性



简化可以理解symbol为全局唯一的字符串。但是你永远不知道字符串里面藏的是什么。

下面定义了name和age的属性,我能用这两个属性,别人也能用这两个属性。如果我把这个对象传给另一个函数。另一个函数就可以调用name和age。没有任何的隐私可言。

我想用拥有一个属性,只有我写的时候,我自己能访问,别人访问不了,如果没有symbol是做不到的。对象的所有属性都是字符串。
用下划线name做隐藏属性 ,这是自欺欺人。所以ES6之前做不到属性的隐藏。


首先使用一个作用域,花括号括起来



我想用上面的变量a。那么就需要把属性括起来。

把object这个对象挂在window.object上。

在花括号外面访问a是访问不到的,在外面访问object是可以访问的到的。

访问a属性 ,访问不到。虽然变量叫做a但是 它是一个symbol类型的


无论如何都读取不到这个隐藏属性。


只能这一块代码内引用,变量a的属性。


symbol可以创造一个隐藏属性。

总结

结束

原文地址:https://www.cnblogs.com/wangjunwei/p/11841154.html