1.シンボルの基本的な使用法
ES6では、一意の値を表す新しいプリミティブデータ型シンボルが導入されています。これはjsの7番目のデータ型です。文字列に似たデータ型。
1.機能:
(1)値は一意であり、名前の競合を解決するために使用されます
(2)値は他のデータ型で操作できません
(3)シンボルで定義されたオブジェクトプロパティは、for ... inループを使用してトラバースできませんが、Reflect.ownKeysすべてのオブジェクトを取得するために使用できますキー名。
シンボルの作成方法:
let a=Symbol();
let b=Symbol('aa');
let c=Symbol('aa');
console.log(b);//symbol(aa);
console.log(a==b);//false
symbol.for()を使用して作成されたシンボル、割り当てが同じである場合、シンボルは等しい
let d=Symbol.for("aa");
console.log(d);//symbol(aa)
let d=Symbol.for("aa");
let e=Symbol.for("aa");
console.log(d===e);//true
2つ目は、シンボルタイプの属性またはメソッドをオブジェクトに追加することです。
方法一:
//向对象中添加symbol类型的属性和方法,up,down
let game={
name:"俄罗斯方块",
};
//定义一个对象方法
let methods={
up:Symbol(),
down:Symbol()
};
// game.up=function(){
//这种添加up方法有风险,无法确定game中是否已经存在up方法了
//}
game[methods.up]=function(){
console.log("我可以上移");
};
game[methods.down]=function(){
console.log("我可以上移");
};
console.log(game);
game[methods.up]();//调用这个方法
方法二:
let up=Symbol();
let down=Symbol();
let game={
name:"俄罗斯方块",
[up]:function(){
console.log("我可以上移");
},
[down]:function(){
console.log("我可以下移");
},
};
game[up]();
3、シンボルの組み込み値