测试
s
y
m
b
o
l
symbol
symbol
'use strict';
let sym = Symbol();
console.log(sym);
const sym1 = Symbol('foo');
const sym2 = Symbol('foo');
console.log(sym1 === sym2);
let myBoolean = new Boolean();
console.log(typeof myBoolean);
let myString = new String();
console.log(typeof myString);
let myNumber = new Number();
console.log(typeof myNumber);
let mySymbol = Symbol('foo');
let myWrappedSymbol = Object(mySymbol);
console.log(myWrappedSymbol);
let fooGlobalSymbol = Symbol.for('foo');
console.log(typeof fooGlobalSymbol);
function isGlobalSymbol(sym) {
return Symbol.keyFor(sym) !== undefined ? true : false;
}
console.log(isGlobalSymbol(fooGlobalSymbol), isGlobalSymbol(mySymbol));
let s1 = Symbol('foo'),
s2 = Symbol('bar');
var o = {
[s1] : 'this is foo',
[s2] : 'this is bar',
};
Object.defineProperty(o, s1, {value: 'this is world'});
console.log(o);
let s3 = Symbol('cool'),
s4 = Symbol('far');
Object.defineProperties(o, {
[s3] : {value: 'this is cool'},
[s4] : {value: 'this is far'},
'Normal' : {value: 'this isn\'t symbol'},
});
console.log(o);
console.log(Object.getOwnPropertySymbols(o));
console.log(Object.getOwnPropertyNames(o));
console.log(Object.getOwnPropertyDescriptors(o));
console.log(Reflect.ownKeys(o));
function isFindSymbol(obj, sym) {
if (!Array.isArray(obj)) {
return Object.getOwnPropertySymbols(obj)
.find((s) => s.toString()
.match(new RegExp(sym)))
!== undefined ? true : false;
}
else {
return obj.find((s) => s.toString()
.match(new RegExp(sym)))
!== undefined ? true : false;
}
}
let s5 = Symbol('h5');
let arr = new Array(1, 2, 3, s5);
console.log(isFindSymbol(arr, 'h9'));
南无阿弥陀佛,善哉善哉