js中Symbol(..)

Symbol(..)

ES6 中新加入了一个基本数据类型 ——符号(Symbol)。符号是具有唯一性的特殊值(并 非绝对),用它来命名对象属性不容易导致重名。该类型的引入主要源于 ES6 的一些特殊 构造,此外符号也可以自行定义。

符号可以用作属性名,但无论是在代码还是开发控制台中都无法查看和访问它的值,只会 显示为诸如 Symbol(Symbol.create) 这样的值。

ES6 中有一些预定义符号,以 Symbol 的静态属性形式出现,如 Symbol.create、Symbol. iterator 等,可以这样来使用:

obj[Symbol.iterator] = function(){ /*..*/ };

我们可以使用 Symbol(..) 原生构造函数来自定义符号。但它比较特殊,不能带 new 关键 字,否则会出错:

js中Symbol(..)

虽然符号实际上并非私有属性(通过 Object.getOwnPropertySymbols(..) 便可以公开获得 对象中的所有符号),但它却主要用于私有或特殊属性。很多开发人员喜欢用它来替代有 下划线(_)前缀的属性,而下划线前缀通常用于命名私有或特殊属性。


分享到:


相關文章: