• Symbol


    作用:用来表示一个独一无二的值:

    console.log(new Symbol() === new Symbol());// false
    console.log(new Symbol('f') === new Symbol('f'));// false
    
    • 1
    • 2

    可以作为对象的属性值存在:

    const name = new Symbol();
    const obj = {
    	[name ]:'xxx', //私有属性
    	say() { console.log(this[name]); }
    }
    Object.getOwnPropertySymbols(obj); //获取Symbol属性名
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    复用相同的symbol

    const a = Symbol.for('f');
    const b = Symbol.for('f');  //该方法维护了字符串和Symbol的注册表
    console.log(a === b); // true
    const c = Symbol.for(true);
    const d = Symbol.for('true');
    console.log(c === d); //true
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    属性

    • Symbol.asyncIterator 符号指定了一个对象的默认异步迭代器。如果一个对象设置了这个属性,它就是异步可迭代对象,可用于for await…of循环。
    • Symbol.hasInstance 用于判断某对象是否为某构造器的实例。因此你可以用它自定义 instanceof 操作符在某个类上的行为。
    • Symbol.isConcatSpreadable符号用于配置某对象作为Array.prototype.concat()方法的参数时是否展开其数组元素。
    • Symbol.iterator 为每一个对象定义了默认的迭代器。该迭代器可以被 for…of 循环使用。
    • Symbol.match 指定了匹配的是正则表达式而不是字符串。String.prototype.match() 方法会调用此函数。
    • Symbol.matchAll 返回一个迭代器,该迭代器根据字符串生成正则表达式的匹配项。此函数可以被 String.prototype.matchAll() 方法调用。
    • Symbol.replace 这个属性指定了当一个字符串替换所匹配字符串时所调用的方法。String.prototype.replace() 方法会调用此方法。
    • Symbol.search 指定了一个搜索方法,这个方法接受用户输入的正则表达式,返回该正则表达式在字符串中匹配到的下标,这个方法由以下的方法来调用 String.prototype.search()。
    • Symbol.species 是个函数值属性,其被构造函数用以创建派生对象。
    • Symbol.split 指向 一个正则表达式的索引处分割字符串的方法。 这个方法通过 String.prototype.split() 调用。
    • Symbol.toPrimitive 是一个内置的 Symbol 值,它是作为对象的函数值属性存在的,当一个对象转换为对应的原始值时,会调用此函数。
    • Symbol.toStringTag 是一个内置 symbol,它通常作为对象的属性键使用,对应的属性值应该为字符串类型,这个字符串用来表示该对象的自定义类型标签,通常只有内置的 Object.prototype.toString() 方法会去读取这个标签并把它包含在自己的返回值里。
    • Symbol.unscopables 指用于指定对象值,其对象自身和继承的从关联对象的 with 环境绑定中排除的属性名称。
  • 相关阅读:
    SpringBoot文件上传深入浅出
    汽车类、TPS7B8225QDGNRQ1、TPS7B8233EPWPRQ1、TPS7B8601QKVURQ1 40V、低压降 (LDO) 线性稳压器
    新鲜速递:Spring Cloud Alibaba环境在Spring Boot 3时代的快速搭建
    [附源码]Python计算机毕业设计Django绿色生鲜
    制作linux下grup启动背景图片
    数据库理论(课件)
    loam详细代码解析与公式推导
    蓝桥杯冲刺_二分(正在补题)
    spring注解使用习惯-Control层前后端交互
    《STL容器篇》-string模拟实现
  • 原文地址:https://blog.csdn.net/qq_31290307/article/details/126771834