• 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 环境绑定中排除的属性名称。
  • 相关阅读:
    成为一名厉害的程序员,需要哪些必备知识
    java并发-锁
    POJ 1328 简单贪心算法
    springcloudalibaba架构(16):Gateway过滤器
    简单介绍十款可以免费使用的API测试工具
    为何重要?解析企业实行网络安全等级保护的必要性
    Python实现Stacking回归模型(随机森林回归、极端随机树回归、AdaBoost回归、GBDT回归、决策树回归)项目实战
    注册登录首选,趣味滑块验证码
    segment方案解决VXLAN分布式网关DCI间互联
    Java:如何在PowerPoint幻灯片中创建散点图
  • 原文地址:https://blog.csdn.net/qq_31290307/article/details/126771834