Symbol

ES6 Symbol学习笔记

一、概述总结

1、用途。

        与别人的命名容易发生冲突。一种新的原始数据类型,表示独一无二的值。

2、生成。

        通过Symbol函数生成,对象的属性名现在可以有两种类型,一种是原来就有的字符串,另一种就是新增的 Symbol 类型。凡是属性名属于 Symbol 类型,就都是独一无二的,可以保证不会与其他属性名产生冲突。   唯一标识

3、注意。

不能使用new命令。

接受参数标识好分辨。

symbol( " aaa ") 和 symbol( " aaa ") 不相等 ,唯一的。

不能同其他类型比较。

可以转化成字符串和boolean值。

二、作为属性名的Symbol总结

1、起因。

唯一标识嘛不是,作为对象属性名不会被覆盖。

2、注意。

不能用点运算符。obj.x = 111 ; 点运算符后面是字符串类型。

同理,对象内部的Symbol也要方括号括住。

Symbol作为属性是公开属性,不是私有。

for...in...   for...of...不会循环它。

Object.getOwnPropertySymbols(obj)会返回对象的所有Symbol属性。

Reflect.ownKeys()会返回对象的所有键名。

三、Symbol.for() Symbol.keyFor()总结

Symbol.for("cat")  == Symbol.for("cat")。 用于登记(类似全局声明  唯一的了)

Symbol.keyFor() 返回一个已登记的Symbol值 。可以在不同的 iframe 或 service worker 中取到同一个值。

四、内置方法

Symbol.hasInstance  指向一个内部方法  应该类似  instanceof

Symbol.isConcatSpreadable concat()是否打开

猜你喜欢

转载自blog.csdn.net/Mayou_ye/article/details/82382343