es6のクラスには静的属性がありますか?
es6 のクラスには静的属性がありません。静的属性はクラス自体の属性、つまりクラス (Class.propname) 内で直接定義された属性であり、インスタンス化する必要はありません。ただし、ES6 では、Class 内には静的メソッドのみが存在し、静的属性は存在しないと規定されています。
このチュートリアルの動作環境: Windows 7 システム、ECMAScript バージョン 6、Dell G3 コンピューター。
ES6 では、オブジェクトのテンプレートとして class (クラス) が導入され、class キーワードを通じてクラスを定義できるようになりました。
クラスの本質は関数です。
これは、オブジェクト プロトタイプの記述をより明確にし、オブジェクト指向プログラミングの構文に近づける構文糖とみなすことができます。
ES6 クラスの静的メソッド、プロパティ、インスタンス プロパティ
クラスはインスタンスのプロトタイプに相当し、クラス内で定義されているすべてのメソッドインスタンスの継承になります。メソッドの前に static キーワードを付けた場合、そのメソッドはインスタンスに継承されず、クラスを通じて直接呼び出されることを意味し、これを「静的メソッド」と呼びます。
class Foo { static classMethod() { return 'hello'; } } Foo.classMethod() // 'hello' var foo = new Foo(); foo.classMethod() // TypeError: foo.classMethod is not a function
上記のコードでは、クラス Foo の classMethod メソッドの前に static キーワードがあります。これは、メソッドが静的メソッドであり、クラス Foo (Foo.classMethod()) ではなく直接呼び出すことができることを示しています。 on class Foo インスタンスで呼び出されます。静的メソッドがインスタンスで呼び出される場合、メソッドが存在しないことを示すエラーがスローされます。
親クラスの静的メソッドはサブクラスに継承できます。
class Foo { static classMethod() { return 'hello'; } } class Bar extends Foo {} Bar.classMethod(); // 'hello'
上記のコードでは、親クラス Foo には静的メソッドがあり、サブクラス Bar はこのメソッドを呼び出すことができます。
静的メソッドはスーパー オブジェクトから呼び出すこともできます。
class Foo { static classMethod() { return 'hello'; } } class Bar extends Foo { static classMethod() { return super.classMethod() + ', too'; } } Bar.classMethod();
静的プロパティ
静的プロパティは、インスタンス オブジェクト (this) で定義されたプロパティではなく、クラス自体のプロパティ、つまり Class.propname を参照します。
class Foo {} Foo.prop = 1; Foo.prop // 1
上記の記述方法は、Foo クラスの静的プロパティ prop を定義します。
ES6 ではクラス内には静的メソッドのみが存在し、静的属性は存在しないと明確に規定されているため、現時点ではこの書き方のみが可能です。
// 以下两种写法都无效 class Foo { // 写法一 prop: 2 // 写法二 static prop: 2 } Foo.prop // undefined
ES7 には静的プロパティの提案があり、現在 Babel トランスコーダでサポートされています。
この提案では、インスタンス属性と静的属性の両方について新しい記述方法を規定しています。
(1) クラスのインスタンス属性
クラスのインスタンス属性は、方程式を使用してクラスの定義に書き込むことができます。
class MyClass { myProp = 42; constructor() { console.log(this.myProp); // 42 } }
上記のコードでは、myProp は MyClass のインスタンス属性です。 MyClass のインスタンスでは、このプロパティを読み取ることができます。
以前は、インスタンス属性を定義するときは、クラスのコンストラクター メソッドにのみ記述することができました。
class ReactCounter extends React.Component { constructor(props) { super(props); this.state = { count: 0 }; } }
上記のコードでは、this.state 属性がコンストラクターで定義されています。
新しい書き方では、コンストラクターメソッドで定義する必要がありません。
class ReactCounter extends React.Component { state = { count: 0 }; }
この書き方は以前よりもわかりやすくなりました。
読みやすくするために、新しい記述方法では、コンストラクターで定義されたインスタンス プロパティを直接リストできるようになりました。
class ReactCounter extends React.Component { constructor(props) { super(props); this.state = { count: 0 }; } state; }
(2) クラスの静的属性
クラスの静的属性は、上記のインスタンス属性の記述方法の前に static キーワードを追加するだけです。
class MyClass { static myStaticProp = 42; constructor() { console.log(MyClass.myProp); // 42 } }
同様に、この新しい記述方法により、静的属性の表現が大幅に容易になります。
// 老写法 class Foo {} Foo.prop = 1; // 新写法 class Foo { static prop = 1; }
上記のコードでは、古い書き方の静的プロパティがクラスの外部で定義されています。クラス全体が生成された後、静的属性が生成されます。これにより、この静的属性が無視されやすくなり、関連するコードをまとめるべきであるというコード編成の原則に準拠しなくなります。さらに、新しい記述方法は代入処理ではなく明示的な宣言 (宣言型) であり、セマンティクスが向上しています。
以上がes6のクラスには静的属性がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











クラスとメソッドの概念とインスタンス クラス (Class): 同じプロパティとメソッドを持つオブジェクトのコレクションを記述するために使用されます。コレクション内のすべてのオブジェクトに共通のプロパティとメソッドを定義します。オブジェクトはクラスのインスタンスです。メソッド: クラスで定義された関数。クラス構築メソッド __init__(): クラスには init() という名前の特別なメソッド (構築メソッド) があり、クラスがインスタンス化されるときに自動的に呼び出されます。インスタンス変数: クラスの宣言において、属性を変数で表現したものをインスタンス変数と呼びます。インスタンス変数とは、self で修飾された変数です。インスタンス化: クラスのインスタンス、クラスの特定のオブジェクトを作成します。継承: つまり、派生クラス (派生クラス) は基本クラス (ベースクラス) を継承します。

非同期はes7です。 async と await は ES7 に新しく追加されたもので、非同期操作のソリューションです。async/await は co モジュールとジェネレーター関数の糖衣構文と言え、より明確なセマンティクスで JS 非同期コードを解決します。名前が示すように、async は「非同期」を意味します。async は関数が非同期であることを宣言するために使用されます。async と await の間には厳密な規則があります。両方を互いに分離することはできず、await は async 関数内でのみ記述できます。

ブラウザの互換性のため。 ES6 は JS の新しい仕様として、多くの新しい構文と API を追加していますが、最新のブラウザーは ES6 の新機能を高度にサポートしていないため、ES6 コードを ES5 コードに変換する必要があります。 WeChat Web 開発者ツールでは、デフォルトで babel が使用され、開発者の ES6 構文コードを 3 つの端末すべてで適切にサポートされる ES5 コードに変換し、開発者がさまざまな環境によって引き起こされる開発上の問題を解決できるようにします。プロジェクト内でのみ設定して確認するだけです。 「ES6~ES5」オプション。

es5 では、for ステートメントと IndexOf() 関数を使用して配列の重複排除を実現できます。構文 "for(i=0;i<配列長;i++){a=newArr.indexOf(arr[i]);if( a== -1){...}}」。 es6 では、スプレッド演算子 Array.from() および Set を使用して重複を削除できます。まず配列を Set オブジェクトに変換して重複を削除してから、スプレッド演算子または Array.from() 関数を使用する必要があります。 Set オブジェクトを配列に変換してグループ化するだけです。

手順: 1. 構文 "newA=new Set(a); newB=new Set(b);" を使用して、2 つの配列をそれぞれセット型に変換します; 2. has() と filter() を使用して差分セットを検索します、構文 " new Set([...newA].filter(x =>!newB.has(x)))" では、差分セット要素がセット コレクションに含まれて返されます。 3. 配列を使用します。 from セットを配列に変換するタイプ、構文は「Array.from(collection)」です。

jQuery は、Web 開発で広く使用されている古典的な JavaScript ライブラリで、イベントの処理、DOM 要素の操作、Web ページ上でのアニメーションの実行などの操作を簡素化します。 jQueryを使っていると要素のクラス名を置き換える場面がよくありますが、この記事ではその実践的な方法と具体的なコード例を紹介します。 1.removeClass() メソッドと addClass() メソッドを使用する jQuery には、削除用の RemoveClass() メソッドが用意されています。

es6 では、一時的なデッド ゾーンは構文エラーであり、ブロックを閉じたスコープにする let および const コマンドを指します。コード ブロック内では、let/const コマンドを使用して変数が宣言される前に、変数は使用できず、変数が宣言される前は変数の「デッド ゾーン」に属します。これは構文上「一時デッド ゾーン」と呼ばれます。 ES6 では、一時的なデッド ゾーンや let ステートメントや const ステートメントでは変数のプロモーションが発生しないことを規定しています。これは主に実行時エラーを減らし、変数が宣言される前に使用されて予期しない動作が発生するのを防ぐためです。

PHP コードを記述するとき、クラスを使用するのは非常に一般的な方法です。クラスを使用すると、関連する関数とデータを 1 つのユニットにカプセル化できるため、コードがより明確になり、読みやすく、保守しやすくなります。この記事では、PHPClass の使用法を詳しく紹介し、クラスを適用して実際のプロジェクトでコードを最適化する方法を読者がよりよく理解できるように、具体的なコード例を示します。 1. クラスの作成と使用 PHP では、キーワード class を使用してクラスを定義し、クラス内のプロパティとメソッドを定義できます。
