***
16994 ワード
========================== =======================
ES6 , Symbol( )
//
const syb1 = Symbol();
const syb2 = Symbol("abc");
console.log(syb1, syb1) // Symbol() Symbol(abc)
,
, : __prop__
: ,
:
1.
2. typeof() symbol
3. Symbol ,
3-1. ,
:
const sy = Symbol(" ");
const user = {
a: 1,
b: 2,
[sy]: ' , '
};
3-2. , :
: user[sy] //
3-3. , for-in ,Object.keys
const syb = Symbol();
const obj = {
[syb]: "",
a: 1,
b: 2
}
for (const key in object) {
if (object.hasOwnProperty(key)) {
const element = object[key];
// syb
}
}
3-4. Object.getOwnPropertyNames ,
3-5 es6 Object.getOwnPropertySymbols
4. , , , ,
String , console.log() ,
========================== ============================
( ) ;
:
const syb = Symbol();
const obj1 = {
a: 1,
b: 2,
[syb]: 3,
}
const obj2 = {
[syb]: "c",
a: 2
}
// , ,
:
Symbol.for(" / ") //
const syb1 = Symbol.for();
const syb2 = Symbol.for();
console.log(syb1 === syb2)//true
const syb1 = Symbol.for("abc");
const syb2 = Symbol.for("abc");
console.log(syb1 === syb2)//true
const syb = Symbol.for("abc");
const obj = {
a: 123,
[ Symbol.for("abc")]: b,
}
//
console.log(obj.[Symbol.for("abc")]) // b
//
const SymbolFor = (() => {
const global = {
}; //
return function (name) {
if (!global[name]) {
global[name] = Symbol(name);
}
return global[name];
}
})()
============== ( , ) =======================
, Symbol
ES6 ES5 : , !
, ES6
1. Symbol.hasInstance , instance of
:
obj instance of A
A[Symbol.hasInstance](obj) // function.prototype[Symbol.hasInstance]
js :
Symbol.isConcatSpreadable = true contact
Symbol.toPrimitive = function(type){
}
Symbol.toStringTag = "" Object.prototype.tostring