在 JavaScript 的 ECMA6 标准中,引入了 Symbol 这一新的原始数据类型。Symbol 在 ES6 中是一个全新的东西,因此在进行编译的时候,Babel 默认是不支持 Symbol 的。如果在编译时想要支持 Symbol,就需要进行一些额外配置。
回顾 Symbol
Symbol 是 ES6 中新增的原始数据类型,它不同于其它基本数据类型,因为它可以用来创建“唯一的”标识符,即创建的 Symbol 值彼此之间永远不相等,即使它们具有相同的名字。Symbol 值可以作为对象的属性名使用,此时该属性不会出现在 for…in 循环或 Object.keys() 的列举中。同时,Symbol 可以避免属性名冲突情况的发生,使得代码更加健壮和可靠。
Babel 编译时如何支持 Symbol
在 Babel 中,默认情况下,编译 ES6 代码是不支持 Symbol 的。为了支持它,我们需要安装 transform-es2015-symbol 插件。
npm install --save-dev babel-plugin-transform-es2015-symbol
在 babelrc 中加入插件
{ "plugins": ["transform-es2015-symbol"] }
这样,Babel 就可以支持 Symbol 这一新的原始数据类型,将它编译成对应的 ES5 代码。
接下来,我们来看一个示例代码:
-- -------------------- ---- ------- -- --- -- ----- -- - ------------- ----- ------ - - ----- --------- ----- ------ ---- -- -- ------------------------------------------------ -- -------- ------ -------------------------------------------------- -------------- ------------------------ -- ------展开代码
这里,我们定义了一个名为 id 的 Symbol,使用它作为对象属性名。在输出对象的时候,我们使用了 ES6 的两个新函数:Object.getOwnPropertyNames() 和 Object.getOwnPropertySymbols() 来输出对象的属性名和 Symbol 属性名。这个例子中,id 不会被输出,仅有 Symbol(id) 的键值对才能被获取。
总结
Babel 是一款非常强大的编译工具,它能够帮助开发者在浏览器中运行新版本的 JavaScript 代码。我们在使用 Babel 编译 ES6 代码时,要注意需要对支持的原始数据类型进行额外配置。本文中,我们介绍了如何配置 Babel 来支持 ES6 中的 Symbol,以及示例代码。希望对读者们有帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64a3ef9648841e989405fc9f