ホームページ >ウェブフロントエンド >フロントエンドQ&A >es6 の静的プロパティとインスタンス プロパティの違いは何ですか?

es6 の静的プロパティとインスタンス プロパティの違いは何ですか?

青灯夜游
青灯夜游オリジナル
2022-04-13 13:52:542484ブラウズ

違い: 1. 静的プロパティはクラス自体のプロパティであり、クラス自体でのみ呼び出すことができますが、インスタンス プロパティはインスタンス オブジェクトのプロパティです; 2. インスタンス オブジェクトは静的プロパティを呼び出すことはできませんが、クラスは呼び出すことができますインスタンス プロパティ; 3. 静的属性の宣言メソッドは 1 つだけで、構文は「クラス名.属性名 = 値」ですが、インスタンス属性の宣言メソッドは複数あり、サンプル クラスでは「属性名 =」で定義されています。価値"。

es6 の静的プロパティとインスタンス プロパティの違いは何ですか?

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

静的とは、インスタンスに継承されないことを意味します。クラス自体に属します。スコープと同様、インスタンスに継承できず、呼び出すこともできません。

  • 静的プロパティ: これらはクラス自体のプロパティです。クラス自体でのみ呼び出すことができます。静的プロパティはインスタンス オブジェクトから呼び出すことはできません。クラスからのみ呼び出すことができます。もちろん、サブクラスからも呼び出すことができます 親クラスの静的属性;

  • インスタンス属性: インスタンスの属性です インスタンス オブジェクトが呼び出すことができるインスタンス属性インスタンスはクラスの静的属性を呼び出すことはできませんが、クラスはインスタンス プロパティを呼び出すことができることに注意してください。

静的プロパティを宣言します:

これは、通常のオブジェクトにプロパティを追加するのと同じです、object.a = value; (現在唯一のメソッド); クラス内に static キーワードを追加することを提案している人もいますが、まだ実装されていません。

class F{};
F.b="父类的静态属性";//给F类加静态方法

静的メソッドの宣言: メソッドの前に static キーワードを追加します

class Foo {
  static bar () {//静态方法  静态方法中的this指向类本身而不是实例
    this.baz();
  }
  static baz () {//静态方法
    console.log('hello');
  }
}
 
Foo.bar() // hello
new Foo().bar();//实例调用不了,会报错

インスタンス属性の宣言:

1 (クラス ## で定義) #

class MyClass {
  myProp = 42;
 
  constructor(props) {
    console.log(this.myProp); // 42
  this.name=props.name

  }
}
 
//上面代码中,myProp就是MyClass的实例属性。在MyClass的实例上,可以读取这个属性。

2、コンストラクターで定義 (react での従来の記述)

class ReactCounter extends React.Component {
  constructor(props) {
    super(props);//可以让子类继承
    this.state = {
      count: 0
    };
  }
}
 
//等价于
class ReactCounter extends React.Component {
  state = {
    count: 0
  };
}

静的プロパティとインスタンス プロパティの違いの概要:

  • 静的プロパティはクラス自体のプロパティであり、クラス自体でのみ呼び出すことができますが、インスタンス プロパティはインスタンス オブジェクトのプロパティであり、インスタンス オブジェクトから呼び出すことができます。

  • インスタンス オブジェクトは静的プロパティを呼び出すことができず、クラス自体によってのみ呼び出すことができます。また、クラスはインスタンス プロパティを呼び出すことができます。

  • 静的プロパティには宣言メソッドが 1 つだけありますが、インスタンス プロパティには複数の宣言メソッドがあります。


  • #インスタンス属性はインスタンス上で定義され、コンストラクター内のインスタンス上で定義することも、コンストラクターがインスタンス化された後のインスタンス上で定義することもできます。

    静的プロパティ、コンストラクターの上で定義されたプロパティ。コンストラクターを通じて直接アクセスできます。

[関連する推奨事項:

JavaScript ビデオ チュートリアル Web フロントエンド ]

以上がes6 の静的プロパティとインスタンス プロパティの違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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