ES6-Symbol

Symbol实际上是ES6引入的一种原始数据类型,除了Symbol,JavaScript还有其他5种数据类型,分别是Undefined、Null、Boolean、String、Number、对象,这5种数据类型都是ES5中就有的。

1、创建实例:symbol不能用new命令来实例化,否则报错。

// symbol 的实例
let sy1 = Symbol('key1');
let sy2 = Symbol('key1');
let sy3 = Symbol('key3');
console.log(sy1); // Symbol('key1');
console.log(sy1 === sy2); // false
console.log(typeof (sy1)); // 'symbol'

symbol的参数是一个字符串,也可以是一个对象,会把对象调用toString进行转换

2、symbol 的作用是防止对象属性名都是字符串容易造成属性名的冲突。 

console.log(sy1 === sy2); // false
sy1 不等于 sy2 是因为symbol表示独一无二的值。
let obj = {
    name: 'tom' 
}
obj.name = 'lusi';

 这里的obj.name被重写了,

3、symbol的作用:

复制代码
const COLOR_red = Symbol('red');
const COLOR_yellow = Symbol('yellow');
const COLOR_blue = Symbol('blue');
            
function getConstantName(color) {
    switch (color) {
        case COLOR_red :
        return "COLOR_RED";
        case COLOR_yellow :
        return "COLOR_YELLOW ";
        case COLOR_blue:
        return "COLOR_BLUE";
        default:
            // throw new Exception('Can\'t find this color');
            return "COLOR_not";
        }
}
console.log(getConstantName(COLOR_red));                
复制代码

 

posted @   花先生。  阅读(272)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
点击右上角即可分享
微信分享提示