JavaScript中的“符号”原始数据类型是什么[复制]

参见英文答案 > What are the possible usage scenarios for the new JavaScript “Symbol” datatype?1个
新的原始类型带有符号类型的ES6.简短定义说:

符号是唯一且不可变的数据类型,可用作对象属性的标识符.符号对象是符号基元数据类型的隐式对象包装器.

我做了一些研究,但我无法理解为什么我们需要这种原始类型呢?

谢谢您的回答.

解决方法

这种原始类型对于所谓的“私有”和/或“唯一”密钥很有用.

使用符号,您知道没有其他人不共享此实例(而不是字符串)将无法在地图上设置特定属性.

没有符号的示例:

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

相关文章

什么是深拷贝与浅拷贝?深拷贝与浅拷贝是js中处理对象或数据...
前言 今天复习了一些前端算法题,写到一两道比较有意思的题:...
最近在看回JavaScript的面试题,this 指向问题是入坑前端必须...
js如何实现弹出form提交表单?(图文+视频)
js怎么获取复选框选中的值
js如何实现倒计时跳转页面