ECMAScript6——Symbol类型
程序员文章站
2022-03-21 22:32:29
1、初始化let sym = Symbol();console.log(typeof sym); //symbol2、不会覆盖已有的属性let s1 = Symbol();let s2 = Symbol();let s3 = Symbol('symbol');console.log(s1 == s2); //falseconsole.log(s2 == s3); //false3、重用let s1 = Symbol.for('s');let s2 = Symbol.for('s'...
1、初始化
let sym = Symbol();
console.log(typeof sym); //symbol
2、不会覆盖已有的属性
let s1 = Symbol();
let s2 = Symbol();
let s3 = Symbol('symbol');
console.log(s1 == s2); //false
console.log(s2 == s3); //false
3、重用
let s1 = Symbol.for('s');
let s2 = Symbol.for('s');
let s3 = Symbol('s');
console.log(s1 === s2); //true
console.log(s1 === s3); //false
4、查询全局注册表
let s1 = Symbol.for('s');
console.log(Symbol.keyFor(s1)); //s
let s2 = Symbol('s');
console.log(Symbol.keyFor(s2)); //undefined
5、使用Symbol变量作为属性
let s1 = Symbol('ss1'),
s2 = Symbol('ss2');
let o = {
[s1]: 'ss1 val',
s3: 'ss3 val',
s4: 'ss4 val'
}
Object.defineProperty(o, s2, {value: 'ss2 val'});
let s5 = Object.getOwnPropertySymbols(o).find((symbol) => symbol.toString().match(/ss1/))
console.log(Object.getOwnPropertySymbols(o));
//[Symbol(ss1),Symbol(ss2)]
console.log(Object.getOwnPropertyNmaes(o));
//["s3","s4"]
console.log(Object.getOwnPropertyDescriptors(o));
//{s3: {value: "ss3 val", writable: true, enumerable: true, configurable: true}, s4: {value: "ss4 val", writable: true, enumerable: true, configurable: true}, Symbol(ss1): {value: "ss1 val", writable: true, enumerable: true, configurable: true}, Symbol(ss2): {value: "ss2 val", writable: false, enumerable: false, configurable: false}}
console.log(Reflect.ownKeys(o));
//{"s3", "s4", Symbol(ss1), Symbol(ss2)}
console.log(s5);
//Symbol(ss1)
6、Symbol.hasInstance:判断一个对象是否是一个类或者一个方法的实例
function F(){}
let f = new F();
console.log(F[Symbol.hasInstance](f));//true
class S(){}
let s = new S();
console.log(S[Symbol.hasInstance](s));//true
注:
1、Symbol()函数不能用作构造函数,与new关键字一起用。若需使用则需借用Object()函数。
let s1 = Symbol();
let s2 = Object(s1);
console.log(typeof s2); //object
本文地址:https://blog.csdn.net/qq_44675204/article/details/110185981
上一篇: Zabbix如何使用过滤器实现监控
下一篇: 跟我学XSL(一)第5/5页