美文网首页
Symbol-独一无二的值

Symbol-独一无二的值

作者: skoll | 来源:发表于2022-06-23 15:48 被阅读0次

简介

1 .作为一个对象或一个Map的键值,他可以保证你的对象或Map的键值不重复
2 .即使传入相同的值,他生成的字符串也是不唯一的
3 .Symbol类型唯一合理的用法是用变量存储 symbol的值,然后使用存储的值创建对象属性
4 .如果我们想要向“属于”另一个脚本或者库的对象添加一个属性,我们可以创建一个 symbol 并使用它作为属性的键。symbol 属性不会出现在 for..in 中,因此它不会意外地被与其他属性一起处理。并且,它不会被直接访问,因为另一个脚本没有我们的 symbol。因此,该属性将受到保护,防止被意外使用或重写

返回symbol

1 .Object.getOwnPropertySymbols(obj)
2 .Reflect.ownKeys(obj)

可能会操作到symbol的

1 .

使用场景1 消除魔术字符串

1 .代码中出现多次,与代码形成强耦合关系的某一个具体的字符串或者数值,风格良好的代码,应该尽量消除魔术字符串,由清晰的变量代替

const tabTypes = {
    basic: Symbol(),
    super: Symbol(),
}

if (type === tabTypes.basic) {
    return <div>basic tab</div>
}

if (type === tabTypes.super) {
    return <div>super tab</div>
}

2 .我不关心他真正的值是什么,反正不和其他的相等就可以

使用场景2 避免覆盖之前的属性,给对象添加新属性的时候

const name = Symbol('name');
const obj = {
    [name]: 'ClickPaas',
}

使用场景3 模拟私有方法

1 .代码的任何其他部分都不能意外访问或重写这些属性

const speak = Symbol();
class Person {
    [speak]() {
        ...
    }
}
//因为外面根本就造出来一个speak的symbol类型,所以一定是安全的

使用场景3 类的单例模式

1 .保证一个类仅有一个实例,并提供一个访问它的全局访问点。
2 .解决:一个全局使用的类频繁地创建与销毁
3 .使用场景:当您想控制实例数目,节省系统资源的时候

相关文章

  • Symbol-独一无二的值

    简介 1 .作为一个对象或一个Map的键值,他可以保证你的对象或Map的键值不重复2 .即使传入相同的值,他生成的...

  • 【TS DOC】Symbols

    创建独一无二的值,就算参数相同,返回的Symbol值也是不同的 创建方法Symbol、for、keyFor 内置S...

  • JavaSctipt基础归纳,以及隐式转换的规则

    原始类型: "symbol" 是ES6,新扩展的原始类型;Symbol,表示独一无二的值。Symbol 值通过Sy...

  • es学习-Symbol-推荐看

    symbol的来头 symbol是第六种基础类型,厌倦了只能用String做key,现在可以用Symbol。 Sy...

  • ES6标准入门 摘要 (Symbol)

    Symbol 原始数据类型Symbol,表示独一无二的值,Symbol 值通过Symbol函数生成。这就是说,对象...

  • ES6学习笔记--Symbol

    创建符号值 Symbol没有字面量形式,这在JS的基本类型中是独一无二的.可以用全局函数来创建符号值 符号值是基本...

  • ECMAScript6 基础知识点(下)

    01 Symbol Symbol 为独一无二的值,当 Symbol 值作为对象的属性名的时候,不能用点运算符获取对...

  • 9.Symbol

    概述 ES6 引入了一种新的原始数据类型 Symbol,表示独一无二的值。Symbol 值通过 Symbol 函数...

  • ES6系列二:Symbol

    ES6 引入了一种新的原始数据类型 Symbol,表示独一无二的值。 Symbol 值通过 Symbol 函数生成...

  • ES6入门 ___ Symbol

    一、概述 ES6 引入了一种新的原始数据类型 Symbol,表示独一无二的值。Symbol值通过 Symbol 函...

网友评论

      本文标题:Symbol-独一无二的值

      本文链接:https://www.haomeiwen.com/subject/eauqvrtx.html