[英]Is there a convention for naming symbols in ES6?
我正在玩ES6,看着符号。 不像ruby,例如你写的:symbol
,ES6符号似乎允许任何“标准”变量名。 说实话,我觉得这很混乱:
var privateProperty = Symbol();
var obj = {};
obj[privateProperty] = 'some value goes here';
因为它往往让我觉得privateProperty
可能是像前几年一样的简单字符串。 使用:privateProperty
无效。
就像使用$bar
作为jQuery对象或使用$bar
bar$
作为RxJS / Bacon流一样,我想知道是否已经建立了ES6中命名符号的约定?
obj[privateProperty] = …;
倾向于让我认为privateProperty
可能是像前几年一样的简单字符串。
嗯,这是我们需要忘记的旧思维。 privateProperty
是一个键 ,可以是字符串(属性名称 )或符号。 同样,我们已经学会将(整数) 索引与“正常”属性区分开来。
ES6似乎允许任何“标准”变量名称
就像Ruby一样。 不同之处在于ES6没有为符号引入文字符号(它解析为同一个符号),但只允许使用Symbol
(本地)或Symbol.for
(全局)创建它们。
命名包含符号值的变量没有标准约定 。
当然,如果您倾向于使用此类型注释,则可以始终使用匈牙利表示法 。 如果我必须var _myPrivate
一个标准,我建议使用更微妙的前导下划线( var _myPrivate
)。 属性名称中的下划线总是暗示一些特殊的东西,然后它对于计算属性键( obj[_myPrivate]
)看起来类似。
是否有在ES6中命名符号的约定?
虽然没有关于命名符号保持变量的约定(但是),当然有一个命名符号本身的约定:
Symbol
的参数给出)。 当然,无论如何它们仍然是独一无二的,所以你基本上可以使用你想要的任何名称。 @@iterator = Symbol.for("Symbol.iterator");
)。 如果符号由模块或库导出,则其描述符应以模块/库名称为前缀(以避免冲突)。 对变量使用相同的名称可能是最佳实践(如本机符号已经做过, Symbol.iterator.toString() == "Symbol(Symbol.iterator)"
)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.