4
新的基本类型带有ES6是符号type.The简短的定义说:什么是“符号”的原始数据在JavaScript类型
符号是一个独特的和不可改变的数据类型,并且可以用作对象属性的标识符。符号对象是符号基元数据类型的隐式对象包装器。
我做了一些研究,但我不明白为什么我们需要这种原始类型?
谢谢你的回答。
新的基本类型带有ES6是符号type.The简短的定义说:什么是“符号”的原始数据在JavaScript类型
符号是一个独特的和不可改变的数据类型,并且可以用作对象属性的标识符。符号对象是符号基元数据类型的隐式对象包装器。
我做了一些研究,但我不明白为什么我们需要这种原始类型?
谢谢你的回答。
该原始类型对于所谓的“私人”和/或“唯一”密钥是有用的。
使用符号,你知道没有其他人不分享这个实例(而不是字符串)将无法在地图上设置特定的属性。
实施例不带符号:
var map = {};
setProp(map);
setProp2(map);
function setProp(map) {
map.prop = "hey";
}
function setProp2(map) {
map.prop = "hey, version 2";
}
在这种情况下,该第二函数调用将覆盖在第一个中的值。
然而,符号,而不是仅仅使用“字符串prop
”,我们用实例本身:
var map = {};
var symbol1 = Symbol("prop");
var symbol2 = Symbol("prop"); // same name, different instance – so it's a different symbol!
map[symbol1] = 1;
map[symbol2] = 2; // doesn't override the previous symbol's value
console.log(map[symbol1] + map[symbol2]); // logs 3
不,没有什么私人关于符号。他们*对唯一性很有用。 –
更多(更好)重复:什么是ECMA是“符号”式的点-262-v6?](http://stackoverflow.com/q/30919170/1048572),[为什么要带符号到javascript?](http://stackoverflow.com/q/21724326/1048572) – Bergi