ES6中Symbol的类型

ES6中Symbol的类型

symbol类型是es6新增的一个基本数据类型,表示独一无二的值,
最大的用法是用来定义对象的唯一属性名
基本用法:
symbol不是一个构造函数,不能使用new来创建,与普通函数调用类似

var s = Symbol(); //创建了一个symbol的实例
console.log(s); //Symbol()
console.log(typeof s); //symbol

在Symbol()函数中,对变量的描述,程序无法访问,只能打印日志,这样可以便于区分是哪一个Symbol

let s = Symbol(‘Symbol’);
console.log(s); //Symbol(Symbol)
console.log(typeof s); //symbol

symbol类型的值具有唯一性,是一个独一无二的值,
每一个 Symbol 的值都不相等。相同参数 Symbol() 返回的值不相等

let s1=Symbol(),
s2=Symbol();
console.log(s1===s2); //false

使用场景:

如果对象下同时添加了与symbol同名的常规属性,则使用[]访问的是symbol属性,使用点运算符访问的是常规属性

let s = Symbol(“name”);
let obj = {};
obj.n = “Mr .Lee”;
obj[n] = “Mr.Wang”;
console.log(obj[n]);//Mr .Lee
console.log(obj.n);//Mr.Wang

symbol类型的值具有唯一性,由于每一个 Symbol 的值都是不相等的,所以 Symbol 作为对象的属性名,可以保证属性不重名。

var n = Symbol(“uname”);
var n2 = Symbol(“uname”);
var obj1 = {};
obj1[n] = “tom”;
obj1[n2] = “jerry”;
console.log(obj1);//{Symbol(uname): “tom”, Symbol(uname): “jerry”}

可以通过 Object.getOwnPropertySymbols() 和 Reflect.ownKeys() 取到。

var n = Symbol(“uname”);
var obj = {};
obj[n] = “tom”;
console.log(Reflect.ownKeys(obj));//[Symbol(uname)]
console.log(Object.getOwnPropertySymbols(obj));//[Symbol(uname)]

上一篇:59-10000 前端和后台交互基本过程测试 ,举例说明 输入正确就登录成功,否则进行一个验证提示


下一篇:TensorFlow 2.0+Keras 防坑指南