更新时间: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种方式的输出结果相同。
【AI设计】北京143期毕业仅36天,全员拿下高薪offer!黑马AI设计连续6期100%高薪就业
2025-09-19【跨境电商运营】深圳跨境电商运营毕业22个工作日,就业率91%+,最高薪资达13500元
2025-09-19【AI运维】郑州运维1期就业班,毕业14个工作日,班级93%同学已拿到Offer, 一线均薪资 1W+
2025-09-19【AI鸿蒙开发】上海校区AI鸿蒙开发4期5期,距离毕业21天,就业率91%,平均薪资14046元
2025-09-19【AI大模型开发-Python】毕业33个工作日,就业率已达到94.55%,班均薪资20763元
2025-09-19【AI智能应用开发-Java】毕业5个工作日就业率98.18%,最高薪资 17.5k*13薪,全班平均薪资9244元
2025-09-19