Menu
CoddyTech

get ve set Anahtar Kelimeleri

Coddy'nin JavaScript Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 43 / 56.

Alıcılar ve ayarlayıcılar, özellikler gibi görünen ancak aslında işlev olan özel yöntemlerdir. Özelliklere nasıl erişilip değiştirileceği üzerinde kontrol sahibi olmanızı sağlarlar.

Basit bir Person sınıfı oluşturalım:

class Person {
  constructor(firstName, lastName) {
    this._firstName = firstName;
    this._lastName = lastName;
  }
  
  // fullName için getter
  get fullName() {
    return `${this._firstName} ${this._lastName}`;
  }
  
  // fullName için setter
  set fullName(value) {
    const parts = value.split(' ');
    this._firstName = parts[0];
    this._lastName = parts[1];
  }
}

_firstName ve _lastName içindeki alt çizgi bir adlandırma kuralıdır: diğer geliştiricilere bu özelliklerin dahili olduğunu ve doğrudan değil, getter ve setter aracılığıyla okunup değiştirilmesi gerektiğini belirtir. JavaScript bunu zorunlu kılmaz.

Artık bu getter ve setter'ları özellikler gibi kullanabiliriz:

// Yeni bir Person oluştur
const person = new Person('John', 'Doe');

// Getter'ı kullan
console.log(person.fullName); // Çıktı: John Doe

// Setter'ı kullan
person.fullName = 'Jane Smith';

// Setter, iç özellikleri güncelledi
console.log(person.fullName); // Çıktı: Jane Smith

Bu yöntemleri parantezlerle çağırmadığımıza dikkat edin. Tıpkı özellikler gibi davranırlar, ancak erişildiklerinde veya değiştirildiklerinde kod çalıştırırlar.

challenge icon

Görev

Sizeye User sınıfı ve bir age özelliği verilmiştir. Göreviniz, age için aşağıdakileri yapan bir getter ve setter eklemektir:

  1. Getter get age(): saklanan yaşı döndürür
  2. Setter set age(newAge): yaşın 0 ile 120 arasında olduğunu doğrular
    • Geçerliyse (0-120): this._age içinde saklar
    • Geçersizse: değiştirmez ve "Invalid age!" kaydeder

Kendin dene

import { User } from './user.js';

// Test kodu - değiştirmeyin
const user = new User("Alice", 25);
console.log(user.age);      // 25 çıktısını vermeli

user.age = 30;
console.log(user.age);      // 30 çıktısını vermeli

user.age = 150;             // "Invalid age!" göstermeli
console.log(user.age);      // Hâlâ 30 çıktısını vermeli (değişmeden)

quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Nesne Yönelimli Programlama bölümündeki tüm dersler

Kendi başına pratik yap: Online JavaScript derleyicisi