Derslerin süresini uzat

extends anahtar kelimesi, üst sınıfla birlikte başka bir alt sınıf işlevi gören sınıf (bazen "base class" olarak adlandırılır ve alt sınıfın prototipi olarak işlev görür (bazen "alt sınıf" olarak adlandırdık. veya "türetilmiş sınıf").

class ParentClass {}
class ChildClass extends ParentClass {}

Object.getPrototypeOf( ChildClass );
> class ParentClass {}

Bu alt sınıflar, üst sınıfın özelliklerini ve yöntemlerini devralır. Bu bir sınıfın temel işlevini, daha spesifik yanıtlar verecek şekilde genişletmenizi sağlar. mümkün olan her kullanım alanına uyacak şekilde üst sınıfa yüklenmeden, veya benzer bir amaca hizmet eden bir kodu yeniden uygulamaktır.

Alt sınıflar, devralınan yöntemler için kendi uygulamalarını sağlayabilir bir ebeveyn sınıfından:

class MyClass {
  constructor( myPassedValue ) {
    this.instanceProp = myPassedValue;
  }
  classMethod() {
    console.log( `The value was '${ this.instanceProp }.'`)
  }
}
class ChildClass extends MyClass {
  classMethod() {
    console.log( `The value was '${ this.instanceProp },' and its type was '${ typeof this.instanceProp }.'`)
  }
}

const myParentClassInstance = new MyClass( "My string." );
const mySubclassInstance = new ChildClass( 100 );

myParentClassInstance.classMethod();
> "The value type was 'string.'"

mySubclassInstance.classMethod();
> "The value was '100,' and its type was 'number.'"

Ayrıca, üst sınıfta tanımlanan yöntemleri super kullanan alt sınıf:

class MyClass {
  constructor( myPassedValue ) {
    this.instanceProp = myPassedValue;
  }
  classMethod() {
    console.log( `The value was '${ this.instanceProp }.'`)
  }
}

class ChildClass extends MyClass {
  subclassMethod() {
    super.classMethod();
    console.log( `The value type was '${ typeof this.instanceProp }.'`)
  }
}
const mySubclassInstance = new ChildClass( 100 );

mySubclassInstance.subclassMethod();
> The value was '100.'
> The value type was 'number.'

Önceki örneklerde gösterildiği gibi, constructor() yöntemi bir alt sınıfın bağlamını düşünün. JavaScript'in örtülü oluşturucusu, üst kurucusuyla birlikte çalışır. Ancak bir oluşturucusu varsa önce super() öğesini, this öğesine referans vermeden önce gerekli bağımsız değişkenleri belirtin.

class MyClass {
  constructor( myPassedValue ) {
    this.instanceProp = myPassedValue;
  }
  classMethod() {
    console.log( `The value was '${ this.instanceProp }.'`)
  }
}

class ChildClass extends MyClass {
    constructor( myPassedValue ) {
        super( myPassedValue );
        this.modifiedProp = myPassedValue + 50;
    }\
    subclassMethod() {
        super.classMethod();
        console.log( `The value type was '${ typeof this.instanceProp }.'`)
    }
}
const mySubclassInstance = new ChildClass( 100 );

mySubclassInstance;
> MyClass { instanceProp: 100, modifiedProp: 150 }

Alıcılar ve belirleyiciler, yalnızca verileri almak ve tanımlamak için kullanılan değerlerine göre sıralanır. get ve set anahtar kelimeleri kullanılarak tanımlanan yöntemler, hareketsizmiş gibi etkileşimde bulunabilecekleri yöntemler oluşturursunuz özellikler.

class MyClass {
    constructor( originalValue ) {
        this.totalValue = 0;
    }
    set doubleThisValue( newValue ) {
        this.totalValue = newValue * 2;
    }
    get currentValue() {
        console.log( `The current value is: ${ this.totalValue }` );
    }
}
const myClassInstance = new MyClass();

myClassInstance;
> MyClass { totalValue: 0 }

myClassInstance.doubleThisValue = 20;

myClassInstance.currentValue;
> The current value is: 40

get ve set özellikleri sınıfın prototip özelliğinde tanımlanır. ve bu nedenle sınıfın tüm örnekleri için kullanılabilir durumdadır.

Öğrendiklerinizi sınayın

extends anahtar kelimesiyle oluşturulan sınıflar hakkındaki doğru ifadeleri seçin.

Genişlettiği sınıfın üst öğesi olarak işlev görür.
Üst sınıfının özelliklerini ve yöntemlerini devralır.
Genişlettiği sınıfın alt öğesi olarak işlev görür.
It can't overwrite methods from a parent class.