微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐