blog

JavaScriptにSymbol型がある理由

自分で作成したシンボルに加えて、5では開発者に公開されていない組み込みシンボルもあります。オブジェクトのデフォルト・イテレータを返すメソッド。オブジェクトのデフォルト・イテレータを返すメソッド。オブジ...

Dec 10, 2020 · 2 min. read

なぜJavaScriptにはSymbol型があるのですか?

主に属性のリネームを防ぐため

よく知られているシンボル

独自に作成されたシンボルに加えて、JavaScript には ECMAScript 5 では開発者に公開されていない組み込みシンボルがあり、これらは言語内部の振る舞いを表します。これらは以下のプロパティを使ってアクセスできます:

Symbol.iterator オブジェクトのデフォルトのイテレータを返すメソッドです。for...で使用します。で使用します。Symbol.asyncIterator オブジェクトのデフォルトの非同期イテレータを返すメソッドです。...の待ちのために使用されます。正規表現シンボル Symbol.match 文字列をマッチングし、オブジェクトが正規表現として使用できるかどうかを判定するメソッドです。String.prototype.match()で使用されます。Symbol.replace マッチした文字列の部分文字列を置換するメソッドです。 String.prototype.replace()で使用します。Symbol.search 正規表現にマッチする文字列のインデックスを返すメソッドです。String.prototype.search()で使用します。Symbol.split 正規表現にマッチしたインデックスで文字列を分割するメソッドです。String.prototype.split()で使用します。その他のシンボル Symbol.hasInstance コンストラクタ・オブジェクトによって識別されるオブジェクトが、そのオブジェクトのインスタンスであるかどうかを判定するメソッドです。instanceof で使用されます。Symbol.isConcatSpreadable オブジェクトを配列要素に平坦化するかどうかを示すブール値。Array.prototype.concat() で使用されます。Symbol.unscopables プロパティ名を所有し継承するオブジェクトの値は、環境にバインドされた関連オブジェクトから除外されます。Symbol.species 派生オブジェクトを作成するためのコンストラクタ関数。Symbol.toPrimitive オブジェクトをプリミティブデータ型に変換するメソッド。Symbol.toStringTag オブジェクトのデフォルトの説明に使用される文字列値。Object.prototype.toString() で使用されます。

Read next

[DFS] 近接数の最長経路

不要なループを減らすために、dfs.disited arrayを使用して訪問済みかどうかを判断します。各再帰の終了時に、現在の最長リストをmaxListに代入します。 結果のリストが1回でも全長の半分以上であれば、それが最長経路です。Diameterは外側のループを抜けます。戻る前にリストをソートします。

Dec 9, 2020 · 2 min read