更新时间:2023-08-18 来源:黑马程序员 浏览量:

因为每一个Symbol的值都是不相等的,所以将Symbol作为对象的属性名可以保证属性不重名。这适用于对象由多个模块组成的情况,可以防止某一个键被意外改写或覆盖,示例代码如下。
<script>
let MY NAME = Symbol ();
//第1种写法
let a = {}
a[MY_NAME] = 'Hello!';
console.log(a);// 输出结果:{ Symbol():“Hello!"}
//第2种写法
let a = {
[MY_NAME]: 'Hello!',
};
console.log(a);//输出结果:{Symbol():“Hello!”}
//第3种写法
let a = ();
Object.defineProperty(a, MY_NAME, ( value: 'Hello!'));
console.log(a);//输出结果:(Symbol():“Hello!“)
</script>上述代码通过方括号结构或Object.defineProperty 将对象的属性名指定为一个Symbol 值。使用第1种写法时,将Symbal值作为对象属性名要使用方括号而不能用点运算符。这是因为点运算符后面一直是字符串,导致a的属性名实际上是一个字符串,而不是一个Symbol值。使用第2种写法时,若想在对象内部使用Symbal值定义属性,Symbol 值必须放在方括号中,如果MY_NAME不放在方括中,该属性的键名就是字符串MY_NAME,而不是MY_NAME所代表的那个Symbal值。使用第3种写法时,会直接在一个a对象上定义一个新属性,并返回此对象。以上3种方式的输出结果相同。
毕业16个工作日,平均薪资13180元,就业率100%,广州黑马AI智能应用开发(Java)学科20250529班
2026-03-06毕业32个工作日,平均薪资11147元,就业率95%,广州黑马AI智能应用开发(Java)学科20250326班
2026-03-05黑马程序员2025全国就业数据发布:全学科平均就业率92.07%,AI开发类就业平均薪资达11869.67元。
2026-03-05黑马全国校区齐开班!场面太太太壮观了!
2026-03-03AI智能应用开发课程紧贴企业刚需,全程高效学习,直达中高级软件开发水平
2026-02-28风口正劲!黑马程序员又一AI智能应用开发班毕业当天100%就业!
2026-02-27