symbol(唯一标识符)

symbol 是一种基本数据类型能作为对象属性的唯一标识符;这是该数据类型仅有的目的。

尝试将一个 symbol 值转换为一个 number 值时,会抛出一个 TypeError 错误 (e.g. +sym or sym | 0).

使用宽松相等时, Object(sym) == sym returns true.

这会阻止你从一个 symbol 值隐式地创建一个新的 string 类型的属性名。例如,Symbol("foo") + "bar" 将抛出一个 TypeError (can‘t convert symbol to string).

在 for...in 迭代中不可枚举

String(sym)的作用会像symbol类型调用 Symbol.prototype.toString() 一样

当使用 JSON.strIngify() 时以 symbol 值作为键的属性会被完全忽略

JSON.stringify({[Symbol("foo")]: "foo"});
// ‘{}‘

当一个 Symbol 包装器对象作为一个属性的键时,这个对象将被强制转换为它包装过的 symbol 值

var sym = Symbol("foo");
var obj = {[sym]: 1};
obj[sym];            // 1
obj[Object(sym)];    //1
obj.sym    //underfine

var obj = {sym: 1};
obj[sym]    //underfine
obj.sym    //1

Symbol([description])

description 可选的,用一个字符串(可省略)作为其描述。symbol的description可以用于调试,但无法访问到symbol本身。

var sym1 = Symbol();
var sym2 = Symbol(‘foo‘);
var sym3 = Symbol(‘foo‘);

Symbol("foo") === Symbol("foo"); // false

使用 new 运算符的语法将会抛出一个 TypeError 错误,因为围绕原始数据类型创建一个显式包装器对象从 ECMAScript 6 开始不再被支持。然而,现有的原始包装器对象,如 new Boolean、new String以及new Number因为遗留原因仍可被创建。

var sym = new Symbol(); // TypeError

Symbol.length

长度属性值为0。

Symbol.prototype

描述symbol构造函数的原型

Symbol.iterator

一个返回一个对象默认迭代器的方法。使用 for...of。

typeof Symbol.iterator === ‘symbol‘

Symbol.match

一个用于对字符串进行匹配的方法,也用于确定一个对象是否可以作为正则表达式使用。使用 String.prototype.match().

Symbol.replace

一个替换匹配字符串的子串的方法. 使用 String.prototype.replace().

Symbol.search

一个返回一个字符串中与正则表达式相匹配的索引的方法。使用String.prototype.search().

Symbol.split

一个在匹配正则表达式的索引处拆分一个字符串的方法.。使用 String.prototype.split().

Symbol.hasInstance

一个确定一个构造器对象识别的对象是否为它的实例的方法。使用 instanceof.

Symbol.isConcatSpreadable

一个布尔值,表明一个对象是否应该flattened为它的数组元素。使用Array.prototype.concat().

Symbol.unscopables

拥有和继承属性名的一个对象的值被排除在与环境绑定的相关对象外。

Symbol.species

一个用于创建派生对象的构造器函数。

Symbol.toPrimitive

一个将对象转化为基本数据类型的方法。

Symbol.toStringTag

用于对象的默认描述的字符串值。使用Object.prototype.toString().

Symbol.for(key)

使用给定的key搜索现有的symbol,如果找到则返回该symbol。否则将使用给定的key在全局symbol注册表中创建一个新的symbol。

Symbol.keyFor(sym)

从全局symbol注册表中,为给定的symbol检索一个共享的?symbol key。

Symbol.prototype.constructor

返回创建实例原型的函数. 默认为 Symbol 函数。

Symbol.prototype.toString()

返回包含Symbol描述符的字符串。 覆盖Object.prototype.toString() 方法。

Symbol.prototype.valueOf()

返回 Symbol 对象的初始值.。覆盖 Object.prototype.valueOf() 方法。

Symbol.prototype[@@toPrimitive]

返回Symbol对象的初始值。

原文地址:https://www.cnblogs.com/qq3279338858/p/8900476.html

时间: 2024-11-08 21:49:53

symbol(唯一标识符)的相关文章

GUID (全局唯一标识符)

全局唯一标识符(GUID,Globally Unique Identifier)是一种由算法生成的二进制长度为128位的数字标识符.GUID主要用于在拥有多个节点.多台计算机的网络或系统中.在理想情况下,任何计算机和计算机集群都不会生成两个相同的GUID.GUID 的总数达到了2^128(3.4×10^38)个,所以随机生成两个相同GUID的可能性非常小,但并不为0.GUID一词有时也专指微软对UUID标准的实现. 在理想情况下,任何计算机和计算机集群都不会生成两个相同的GUID.随机生成两个相

GUID 全局唯一标识符

全局唯一标识符(GUID,Globally Unique Identifier)是一种由算法生成的二进制长度为128位的数字标识符.GUID主要用于在拥有多个节点.多台计算机的网络或系统中.在理想情况下,任何计算机和计算机集群都不会生成两个相同的GUID.GUID 的总数达到了2^128(3.4×10^38)个,所以随机生成两个相同GUID的可能性非常小,但并不为0.GUID一词有时也专指微软对UUID标准的实现. 在理想情况下,任何计算机和计算机集群都不会生成两个相同的GUID.随机生成两个相

C#中唯一标识符GUID的一些知识点

概念 GUID: 即Globally Unique Identifier(全球唯一标识符) 也称作 UUID(Universally Unique IDentifier) . GUID是一个通过特定算法产生的二进制长度为128位的数字标识符,用于指示产品的唯一性.GUID 主要用于在拥有多个节点.多台计算机的网络或系统中,分配必须具有唯一性的标识符. 在 Windows 平台上,GUID 广泛应用于微软的产品中,用于标识如如注册表项.类及接口标识.数据库.系统目录等对象. 格式 GUID 的格式

全局唯一标识符(GUID)

全局唯一标识符,简称GUID(发音为/?ɡu??d/或/?ɡw?d/),是一种由算法生成的唯一标识,通常表示成32个16进制数字(0-9,A-F)组成的字符串,如:{21EC2020-3AEA-1069-A2DD-08002B30309D},它实质上是一个128位长的二进制整数.GUID一词有时也专指微软对UUID标准的实现. GUID的主要目的是产生完全唯一的数字.在理想情况下,任何计算机和计算机集群都不会生成两个相同的GUID.GUID的总数也足够大,达到了2128(3.4×1038)个,所

GUID全局唯一标识符

全局唯一标识符(GUID,Globally Unique Identifier)是一种由算法生成的二进制长度为128位的数字标识符.GUID主要用于在拥有多个节点.多台计算机的网络或系统中.在理想情况下,任何计算机和计算机集群都不会生成两个相同的GUID.GUID 的总数达到了2^128(3.4×10^38)个,所以随机生成两个相同GUID的可能性非常小,但并不为0.GUID一词有时也专指微软对UUID标准的实现. 在理想情况下,任何计算机和计算机集群都不会生成两个相同的GUID.随机生成两个相

开发路程(3):关于全球唯一标识符GUID

在C#中的语法: Console.WriteLine(System.Guid.NewGuid()); Console.ReadKey(); System.Guid.NewGuid().ToString()全球唯一标识符,是一个字母数字标识符,用于指示产品的唯一性安装.在很多流行软件应用程序,例如浏览器媒体播放器,都使用GUID. GUID的格式: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx(32个x).都是由0~9或a~f范围内的一个十六进制的数字. 世界上的任何两

GUID(Globally Unique Identifier)全局唯一标识符

最近有大量数据存入数据库时,因为主键为一个nvarchar类型,起初想着用int 类型,每次打开表的时候,获取最后一行的ID,然后让其++. 但发现由于字段是char类型,数据库对其进行了排序.再次插入数据时,末尾已经不再是最后一次插入的数据了.项目组其他人说,使用GUID,windows留有一个产生GUID的接口,可以产生GUID码,我们之后可以把得到的GUID转为我们使用的vchar.         下面来介绍一下GUID,GUID中文被称为全局唯一标识符.是一种由算法生成的二进制长度为1

C# 全局唯一标识符 (GUID)

一 C#  全局唯一标识符 (GUID) Represents a globally unique identifier (GUID). To browse the .NET Framework source code for this type, see the Reference Source. Namespace:  System Assembly:  mscorlib (in mscorlib.dll) GUID 是一个 128 位整数(16 字节),可用于所有需要唯一标识符的计算机和网

iOS中keyChain 实现UUID 设备唯一标识符碰到的问题

废话少说,置入正题: 最近在研究实现获取设备唯一标识符时,经过各方面调研,发现使用苹果官方推荐的keyChain还是挺不错的. Apple提供了一个叫GenericKeychain的例子程序,在这里:http://developer.apple.com/library/ios/#samplecode/GenericKeychain/Listings/Classes_KeychainItemWrapper_h.html#//apple_ref/doc/uid/DTS40007797-Classes