Was ist der Unterschied zwischen statischen Eigenschaften von es6 und Instanzeigenschaften?

青灯夜游
Freigeben: 2022-04-13 13:52:54
Original
2476 Leute haben es durchsucht

Unterschied: 1. Statische Eigenschaften sind Eigenschaften der Klasse selbst und können nur in der Klasse selbst aufgerufen werden, während Instanzeigenschaften Eigenschaften von Instanzobjekten sind. 2. Instanzobjekte können keine statischen Eigenschaften aufrufen, Klassen können jedoch Instanzeigenschaften aufrufen . Statische Eigenschaften Es gibt nur eine Deklarationsmethode, die Syntax lautet „Klassenname. Attributname = Wert“, während es mehrere Deklarationsmethoden für Instanzattribute gibt, die in der Beispielklasse mit „Attributname = Wert“ definiert sind.

Was ist der Unterschied zwischen statischen Eigenschaften von es6 und Instanzeigenschaften?

Die Betriebsumgebung dieses Tutorials: Windows 7-System, ECMAScript Version 6, Dell G3-Computer.

Statisch bedeutet, dass es nicht von der Instanz geerbt wird. Es kann nicht von der Instanz geerbt werden und ist nicht mit dem Bereich identisch.

  • Statische Attribute: Sie sind Attribute der Klasse selbst, die nur in der Klasse selbst aufgerufen werden können. Statische Attribute können nicht für Instanzobjekte aufgerufen werden, sondern können natürlich auch von der Klasse selbst aufgerufen werden statische Attribute der übergeordneten Klasse;

  • Instanzattribute: Es sind die Attribute der Instanz, die Instanzattribute, die das Instanzobjekt aufrufen kann. Denken Sie daran, dass die Instanz die statischen Attribute der Klasse nicht aufrufen kann die Instanzattribute;

Statische Attribute deklarieren:

Es ist dasselbe wie das Hinzufügen von Eigenschaften zu einem normalen Objekt, object.a = 值; (einige Leute haben derzeit vorgeschlagen, das Schlüsselwort static hinzuzufügen, aber das ist der Fall noch nicht implementiert

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

Statische Methode deklarieren: Fügen Sie das statische Schlüsselwort vor der Methode hinzu

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

Instanzeigenschaften deklarieren:

1, definiert in der Klasse

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

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

2, definiert im Konstruktor (klassisches Schreiben in React )

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

Zusammenfassung des Unterschieds zwischen statischen Eigenschaften und Instanzeigenschaften:

  • Statische Eigenschaften sind Die Attribute der Klasse selbst können nur in der Klasse selbst aufgerufen werden, während die Instanzattribute Attribute des Instanzobjekts sind kann vom Instanzobjekt aufgerufen werden.

  • Instanzobjekte können keine statischen Eigenschaften aufrufen, sie können nur von der Klasse selbst aufgerufen werden, und Klassen können Instanzeigenschaften aufrufen.

  • Statische Eigenschaften haben nur eine Deklarationsmethode, während Instanzeigenschaften mehrere Deklarationsmethoden haben.

  • Instanzattribute werden auf der Instanz definiert. Sie können auf dieser innerhalb des Konstruktors oder auf der Instanz definiert werden, nachdem der Konstruktor instanziiert wurde.

    Statische Eigenschaften, über dem Konstruktor definierte Eigenschaften. Kann direkt über den Konstruktor aufgerufen werden.

【Verwandte Empfehlungen: Javascript-Video-Tutorial, Web-Frontend

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen statischen Eigenschaften von es6 und Instanzeigenschaften?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage