Heim  >  Artikel  >  Web-Frontend  >  Wie schreibe ich „oop“ in Javascript

Wie schreibe ich „oop“ in Javascript

王林
王林Original
2023-05-16 09:43:07489Durchsuche

In der Webentwicklung ist JavaScript zu einer sehr beliebten Programmiersprache geworden. In JavaScript ist die objektorientierte Programmierung (OOP) ein wichtiges Konzept. Mit OOP können Sie Ihren Code strukturieren und seine Duplizierung reduzieren, wodurch er einfacher zu warten und zu erweitern ist. In diesem Artikel wird erläutert, wie man OOP in JavaScript schreibt.

  1. Prototyp und Konstruktor

In JavaScript können die Eigenschaften und Methoden eines Objekts über den Prototyp gemeinsam genutzt werden, und der Konstruktor wird verwendet, um ein neues Objekt zu erstellen und seine Eigenschaften zu initialisieren. Das Folgende ist ein einfaches Beispiel für die Verwendung von Konstruktoren und Prototypen:

function Person(name, age) {
  this.name = name;
  this.age = age;
}

Person.prototype.sayHi = function() {
  console.log("Hi, my name is " + this.name + " and I'm " + this.age + " years old.");
}

var person1 = new Person("John", 30);
var person2 = new Person("Mary", 25);

person1.sayHi(); // Hi, my name is John and I'm 30 years old.
person2.sayHi(); // Hi, my name is Mary and I'm 25 years old.

Im obigen Beispiel definieren wir einen Person-Konstruktor und initialisieren name und age Attribut. Dann verwenden wir Person.prototype, um jedem Person-Objekt eine sayHi-Methode hinzuzufügen. Diese Methode kann von allen Person verwendet werden /code> code>Objektfreigabe. Schließlich haben wir zwei Person-Objekte erstellt und deren Methode sayHi aufgerufen. Person构造函数,初始化了nameage属性。然后,我们使用Person.prototype给每个Person对象添加了一个sayHi方法,这个方法可以被所有Person对象共享。最后,我们创建了两个Person对象,并调用了它们的sayHi方法。

  1. 类(class)

在ES6中,JavaScript引入了类的概念,并使用关键字class来实现。类提供了一种更简洁、更易于理解的语法,用于定义对象。

以下是一个使用类的例子:

class Person {
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }
  
  sayHi() {
    console.log("Hi, my name is " + this.name + " and I'm " + this.age + " years old.");
  }
}

let person1 = new Person("John", 30);
let person2 = new Person("Mary", 25);

person1.sayHi(); // Hi, my name is John and I'm 30 years old.
person2.sayHi(); // Hi, my name is Mary and I'm 25 years old.

在上面的例子中,我们使用class关键字定义了一个Person类,并在constructor方法中初始化了nameage属性。然后,我们定义了一个sayHi方法,用于输出一个招呼。最后,我们创建了两个Person对象,并调用了它们的sayHi方法。

  1. 继承(inheritance)

在OOP中,继承是指从一个已有的对象中派生出一个新的对象,新对象继承了原来的对象的属性和方法。在JavaScript中,继承可以通过使用prototypeclass来实现。

以下是使用prototype实现继承的例子:

function Person(name, age) {
  this.name = name;
  this.age = age;
}

Person.prototype.sayHi = function () {
  console.log("Hi, my name is " + this.name + " and I'm " + this.age + " years old.");
}

function Student(name, age, major) {
  Person.call(this, name, age);
  this.major = major;
}

Student.prototype = Object.create(Person.prototype);
Student.prototype.constructor = Student;
Student.prototype.sayMajor = function() {
  console.log("My major is " + this.major + ".");
}

let person1 = new Person("John", 30);
let student1 = new Student("Mary", 25, "Computer Science");

person1.sayHi(); // Hi, my name is John and I'm 30 years old.
student1.sayHi(); // Hi, my name is Mary and I'm 25 years old.
student1.sayMajor(); // My major is Computer Science.

在上面的例子中,我们定义了一个Person构造函数,在原型中添加了sayHi方法。另外,我们定义了一个Student构造函数,通过使用call方法调用了Person构造函数来初始化nameage属性,并添加了一个major属性。然后,我们使用Object.create方法创建了一个Person.prototype的副本,并将其指定给Student.prototype,以便Student对象可以继承Person对象的属性和方法。最后,我们定义了一个sayMajor方法,用于输出学生的专业。最终,我们创建了一个Person对象和一个Student对象,并调用了他们的方法。

以下是使用class实现继承的例子:

class Person {
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }
  
  sayHi() {
    console.log("Hi, my name is " + this.name + " and I'm " + this.age + " years old.")
  }
}

class Student extends Person {
  constructor(name, age, major) {
    super(name, age);
    this.major = major;
  }
  
  sayMajor() {
    console.log("My major is " + this.major + ".");
  }
}

let person1 = new Person("John", 30);
let student1 = new Student("Mary", 25, "Computer Science");

person1.sayHi(); // Hi, my name is John and I'm 30 years old.
student1.sayHi(); // Hi, my name is Mary and I'm 25 years old.
student1.sayMajor(); // My major is Computer Science.

在上面的例子中,我们定义了一个Person类,在constructor方法中初始化了nameage属性,并在sayHi方法中输出了一个招呼。然后,我们使用extends关键字创建了一个Student类,并使用super关键字调用了Person类的constructor方法来初始化nameage属性,并添加了一个major属性。最后,我们定义了一个sayMajor方法,用于输出学生的专业。最终,我们创建了一个Person对象和一个Student对象,并调用了他们的方法。

结论:

在JavaScript中,OOP是一种非常重要的概念,使用对象、构造函数、原型和类可以更好地组织代码和减少重复性。继承可以通过原型和类来实现。从ES6开始,JavaScript引入了关键字class

    Klasse (Klasse)🎜🎜🎜In ES6 führte JavaScript das Konzept der Klasse ein und verwendete das Schlüsselwort class, um es zu implementieren. Klassen bieten eine sauberere, leichter verständliche Syntax zum Definieren von Objekten. 🎜🎜Das Folgende ist ein Beispiel für die Verwendung von Klassen: 🎜rrreee🎜Im obigen Beispiel verwenden wir das Schlüsselwort class, um eine Klasse Person zu definieren und sie im constructor Die Eigenschaften <code>name und age werden in der Methode initialisiert. Dann haben wir eine sayHi-Methode definiert, um eine Begrüßung auszugeben. Schließlich haben wir zwei Person-Objekte erstellt und deren Methode sayHi aufgerufen. 🎜
      🎜Vererbung🎜🎜🎜In OOP bedeutet Vererbung das Ableiten eines neuen Objekts von einem vorhandenen Objekt. Das neue Objekt erbt die Eigenschaften und Methoden des ursprünglichen Objekts. In JavaScript kann die Vererbung durch die Verwendung von prototype und class erreicht werden. 🎜🎜Das Folgende ist ein Beispiel für die Verwendung von prototype zur Implementierung der Vererbung: 🎜rrreee🎜Im obigen Beispiel definieren wir einen Person-Konstruktor und fügen zum Prototyp sayHi hinzu Methode. Darüber hinaus haben wir einen Student-Konstruktor definiert und den Person-Konstruktor mit der Methode call aufgerufen, um name und age-Attribute hinzugefügt und ein major-Attribut hinzugefügt. Anschließend erstellen wir eine Kopie von Person.prototype mit der Methode Object.create und weisen sie Student.prototype zu, sodass Student-Objekte können die Eigenschaften und Methoden von <code>Person-Objekten erben. Schließlich definieren wir eine sayMajor-Methode, um das Hauptfach des Studenten auszugeben. Schließlich haben wir ein Person-Objekt und ein Student-Objekt erstellt und deren Methoden aufgerufen. 🎜🎜Das Folgende ist ein Beispiel für die Verwendung von class zum Implementieren der Vererbung: 🎜rrreee🎜Im obigen Beispiel definieren wir eine Person-Klasse im constructor Die Attribute name und age werden in der Methode initialisiert und eine Begrüßung wird in der Methode sayHi ausgegeben. Dann haben wir eine Student-Klasse mit dem Schlüsselwort extends erstellt und die Klasse Person mit dem Schlüsselwort super aufgerufen Die Methode code>constructor initialisiert die Eigenschaften name und age und fügt eine Eigenschaft major hinzu. Schließlich definieren wir eine sayMajor-Methode, um das Hauptfach des Studenten auszugeben. Schließlich haben wir ein Person-Objekt und ein Student-Objekt erstellt und deren Methoden aufgerufen. 🎜🎜Fazit: 🎜🎜In JavaScript ist OOP ein sehr wichtiges Konzept, bei dem Objekte, Konstruktoren, Prototypen und Klassen verwendet werden, um Code besser zu organisieren und Duplikate zu reduzieren. Vererbung kann durch Prototypen und Klassen erreicht werden. Ab ES6 führte JavaScript das Schlüsselwort class ein, das eine einfachere und leichter verständliche Syntax zum Definieren von Objekten bietet. Wann immer möglich, ist es wichtig, den richtigen Ansatz zum Schreiben von OOP-Code zu wählen, da dieser erhebliche Vorteile bei der Projektentwicklung und -wartung mit sich bringt. 🎜

Das obige ist der detaillierte Inhalt vonWie schreibe ich „oop“ in Javascript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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