//Symbol
//Symbol(description)
const symbol1 = Symbol('symbol1');
// console.log(symbol1.toString());
//Symbol.asyncIterator
const obj1 = {
name: 'obj1',
age: 10
};
Object.defineProperty(obj1, Symbol.asyncIterator, {
value: function* () {
const entr = Object.entries(obj1);
const len = entr.length;
let index = 0;
while (index < len) {
yield entr[index++];
}
}
});
const forAwaitFn = async (ger) => {
for await (let item of ger) {
console.log(item);
}
};
// forAwaitFn(obj1);
//Symbol().description
//symbol.description
const symbol2 = Symbol('symbol2');
const symbol3 = Symbol.for('symbol3');
// console.log(symbol2.description, symbol3.description,
// Symbol.iterator.description, Symbol.asyncIterator.description);
//Symbol.hasInstance
class MyClass1 {
static [Symbol.hasInstance](instance) {
return Array.isArray(instance);
}
};
const MyClass2 = function () {
MyClass2[Symbol.hasInstance] = (instance) => {
console.log('enter---', instance);
return Array.isArray(instance);
}
};
console.log([] instanceof MyClass1, {} instanceof MyClass1,
[] instanceof MyClass2, Object[Symbol.hasInstance]);
console