Итак, вы создали класс с именем Test
, который является базовым классом. Вы добавили метод с именем say() {}
.
class Test {
say() {
console.log("I'm a test.");
}
}
Затем вы создали экземпляр класса Test
ниже:
let TestFromClass = new Test();
И ниже вы создали простой объект JavaScriptс именем TestFromObject
:
let TestFromObject = {
say() {
console.log("I'm also a test.");
}
};
И да, они оба распечатают выходные данные, которые у вас есть, к их методам:
TestFromClass.say(); // Output: I'm a test.
TestFromObject.say(); // Output: I'm also a test.
Разница не начнется, пока вы не используете всю мощькласс, который вы создали, например, используя функцию cconstructor()
следующим образом:
class Test {
constructor() {
}
say() {
console.log("I'm a test.");
}
}
Теперь функция конструктора автоматически вызывается для нас, когда мы используем ключевое слово new
для имени класса. С известной вам функцией конструктора также есть доступ к this
, например:
class Test {
constructor() {
this.type = 'test';
}
say() {
console.log("I'm a test.");
}
}
, что позволяет вам сделать это:
TestFromClass.say(); // Output: I'm a test.
TestFromObject.say(); // Output: I'm also a test.
TestFromClass.type; // Output: test
Конструктор традиционно используется для выполнения некоторых начальных операций. установка внутри класса или конкретного экземпляра класса.
Конструктор обычно используется с использованием некоторых аргументов при создании нового экземпляра класса. Возможно, вы хотите указать, что созданный вами класс Test содержит 50 вопросов. Вы можете передать объект в новый экземпляр Test следующим образом:
let TestFromClass = new Test({ questions: 50 });
Вы можете вызывать этот объект как хотите, давайте просто вызовем объект examination
, и вы можете задать количество вопросов этомуexamination
object.
Итак, теперь вы передаете этот объект в функцию конструктора и вызываете этот объект, examination
примерно так:
class Test {
constructor(examination) {
this.questions = examination.questions;
this.type = 'test';
}
say() {
console.log("I'm a test.");
}
}
let TestFromClass = new Test({ questions: 50 });
TestFromClass.say(); // Output: I'm a test.
TestFromClass.type; // Output: test
TestFromClass.questions; // 50
Другая вещь, которую вы можете сделать с классомОбъект - это создание подкласса, который расширит функциональность вашего базового класса, а затем вы также сможете добавить к нему некоторые настраиваемые функциональные возможности.
class Test {
constructor(examination) {
this.questions = examination.questions;
this.type = 'test';
}
say() {
console.log("I'm a test.");
}
}
class Quiz extends Test {
}
Так что теперь ваш тест наследует все методы, функции, свойства и т. д. которые находятся в классе Test и определяют дополнительные методы внутри него.
class Test {
constructor(examination) {
this.questions = examination.questions;
this.type = 'test';
}
say() {
console.log("I'm a test.");
}
}
class Quiz extends Test {
constructor(examination) {
this.topic = examination.topic;
}
}
Итак, теперь, чтобы убедиться, что функция конструктора из родительского класса также вызывается, я могу использовать ключевое слово super()
вКонструктор:
class Test {
constructor(examination) {
this.questions = examination.questions;
this.type = 'test';
}
say() {
console.log("I'm a test.");
}
}
class Quiz extends Test {
constructor(examination) {
super(examination)
this.topic = examination.topic;
}
}
Затем вы можете создать экземпляр этого подкласса следующим образом:
const javascript = new Quiz({topic: 'javascript', questions: 50 });
и, наконец, распечатать его:
javascript.questions; // Output: 50