ホームページ  >  記事  >  ウェブフロントエンド  >  es6 シンボルは基本的なタイプですか?

es6 シンボルは基本的なタイプですか?

青灯夜游
青灯夜游オリジナル
2022-03-08 16:59:382559ブラウズ

es6 シンボルは基本タイプに属します。 Symbol は、es6 で導入された新しい基本データ型で、一意の値を表します。その機能は、属性名の競合を防ぎ、オブジェクト内の各属性名が一意であることを保証することです。

es6 シンボルは基本的なタイプですか?

このチュートリアルの動作環境: Windows 7 システム、ECMAScript バージョン 6、Dell G3 コンピューター。

Symbol は基本的なデータ型であり、ES6 で導入された 新しい データ型です。

目的は、属性名の競合を防止するであり、オブジェクト内の各属性名が一意であることを確認することです。

let s1 = Symbol('foo');
let s2 = Symbol('foo');

s1 === s2 // false

シンボル タイプには、シンボル インスタンスの description を表す文字列パラメータを含めることができます。したがって、同じ説明を持つ Symbol タイプの 2 つのインスタンスは等しくありません。

使用方法

let s = Symbol();

// 第一种写法
let a = {};
a[mySymbol] = 'Hello!';

// 第二种写法
let a = {
  [mySymbol]: 'Hello!'
};

// 第三种写法
let a = {};
Object.defineProperty(a, mySymbol, { value: 'Hello!' });

// 以上写法都得到同样结果
a[mySymbol] // "Hello!"

シンボル タイプを属性名として使用する場合は、[] を使用する必要があることがわかります。使用しない場合、変数名と同じ文字列が属性名として表されます。

シンボルは属性名として使用されます。オブジェクトをトラバースするとき、属性は for...infor...of# には表示されません。 ## ループ。 、 Object.keys()Object.getOwnPropertyNames()JSON.stringify()## では返されません。

#ただし、これはプライベート プロパティではありません。指定されたオブジェクトのすべての Symbol プロパティ名を取得できる
Object.getOwnPropertySymbols()

メソッドがあります。このメソッドは、メンバーがすべて現在のオブジェクトのプロパティ名として使用される Symbol 値である配列を返します。

同じシンボル値を使用する方法
Symbol.for("bar") === Symbol.for("bar")
// true

Symbol.for()

メソッドを使用すると、同じパラメータで作成された変数の値は同じになります。価値。このメソッドを使用して作成された Symbol 変数はパラメーターをグローバルに登録するためです。 Symbol() で作成された変数のパラメータはグローバルには登録されません。 <pre class="brush:js;toolbar:false;">let s1 = Symbol.for(&quot;foo&quot;); Symbol.keyFor(s1) // &quot;foo&quot; let s2 = Symbol(&quot;foo&quot;); Symbol.keyFor(s2) // undefined</pre>Use

Symbol.keyFor()

グローバルに登録されたパラメータの名前は変数内にあります。 Symbol 組み込み属性値

Symbol.hasInstance

: 他のオブジェクトが instanceof 演算子を使用する場合、それらは指定された内部メソッドを使用します。属性名で指定します。 #Symbol.isConcatSpreadable

Symbol.species

Symbol.match

Symbol.replace

Symbol.search

Symbol.split

Symbol .iterator

Symbol.toPrimitive

Symbol.toStringTag

Symbol.unscopables

【関連する推奨事項: JavaScript ビデオ チュートリアル

Web フロントエンド ]

以上がes6 シンボルは基本的なタイプですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。