esnext

176 阅读1分钟
let s1=Symbol('ly');
let s2=Symbol('ly');
console.log(s1,s2,s1===s2);//Symbol(ly) Symbol(ly) false

let s3=Symbol.for('ly3');
let s4=Symbol.for('ly3');
console.log(s3,s4,s3===s4); //Symbol(ly3) Symbol(ly3) true


let obj={
    name:'ly',
    age:18,
    [s1]:'s1',
    [s2]:'s2'
}
for (const key in obj) {
   console.log(obj[key]);
     //ly 18
}

console.log(Object.getOwnPropertySymbols(obj));//[ Symbol(ly), Symbol(ly) ]


console.log(Object.keys(obj));//[ 'name', 'age' ]


Reflect.ownKeys(obj).forEach(k=>{
    console.log(k,obj[k]);
    //name ly
    //age 18
    //Symbol(ly) s1
    //Symbol(ly) s2
})

const f=function(a,b){
    console.log(a,b);
} 
f.apply=function () {
   console.log('apply'); 
}
Function.prototype.apply.call(f,null,[1,2])
Reflect.apply(f,null,[3,4])
//1 2
let obj2={
    xxx:'yyy',
    [Symbol.toStringTag]:'newType'
}
console.log(Object.prototype.toString.call(obj2));
//[object newType]