最近知ったけど、symbolというのが出てきたんだな。
typeof 〇〇で6種類ではなく、symbolが増えて7種類になった。
Symbolを使ってプロトタイプに新しいメソッドを追加する手法は、JavaScriptにおいて一般的なやり方らしい。
–mdn ここまで–
Array オブジェクトは要素の添字として任意の文字列を(連想配列のように)使用することはできません。非負の整数(またはその文字列形式)を使用しなければなりません。
–mdn ここまで–
そもそも、配列の要素の添え字は非負の整数(またはその文字列形式)やんか。
なので、symbolを使う特殊なパターンと言えるな。
Symbolは一意で不変な値を生成するために使用され、プロパティ名の衝突を避けることができる。
// 新しい Symbol を作成
const mySymbol = Symbol();
// Arrayプロトタイプのプロパティ名mySymbolに関数を格納する。
// こうすると、すべての配列でプロパティ名mySymbolを指定すると関数が呼ばれる。
Array.prototype[mySymbol] = function() {
console.log('新しいメソッドが呼ばれました。');
};
// Array プロトタイプに新しいメソッドを追加
Array.prototype.mySymbol = function() {
console.log('新しいメソッドが呼ばれました。その2');
};
// 配列を作成
const myArray = [1, 2, 3];
// 配列でプロパティ名mySymbolを指定して関数を呼び出す
myArray[mySymbol]();
// 新しいメソッドを呼び出す
myArray.mySymbol();